Merge
authorohair
Mon, 07 Jul 2008 09:11:55 -0700
changeset 741 32027e94348b
parent 737 bee4731164a0 (diff)
parent 740 b13aca6dc92a (current diff)
child 742 d9dc137c39e1
Merge
--- a/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 5ae7db536e3fcf6be78e45b240a9058095e0ed38 jdk7-b26
 67052ac87fc927d048e62ec54ff42adb230d3f7c jdk7-b27
 18dc4ba4739a537fd146f77da51db16efce28da2 jdk7-b28
+bfe4572fd301a6fcd120373cdb2eff5d2da0c72c jdk7-b29
--- a/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/corba/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 0043eb3d4e628f049ff80a8c223b5657136085e7 jdk7-b26
 e84e9018bebbf3e5bafc5706e7882a15cb1c7d99 jdk7-b27
 27509b7d21ed783b3f6eb7b7612781c675a30c2f jdk7-b28
+8b71960f79ce0a6fb8ddfeec03f03d400a361747 jdk7-b29
--- a/corba/make/common/shared/Compiler-sun.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/make/common/shared/Compiler-sun.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/corba/make/common/shared/Defs.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/make/common/shared/Defs.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/corba/make/jprt.config	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/make/jprt.config	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!echo "This is not a shell script"
 #############################################################################
 #
-# 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
--- a/corba/src/share/classes/org/omg/CORBA/ir.idl	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/src/share/classes/org/omg/CORBA/ir.idl	Mon Jul 07 09:11:55 2008 -0700
@@ -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/corba/src/share/classes/org/omg/DynamicAny/DynamicAny.idl	Thu Jul 03 10:09:25 2008 -0700
+++ b/corba/src/share/classes/org/omg/DynamicAny/DynamicAny.idl	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 ad0b851458ff9d1d490ed2d79bb84f75a9fdb753 jdk7-b26
 e3d2692f8442e2d951166dc9bd9a330684754438 jdk7-b27
 c14dab40ed9bf45ad21150bd70c9c80cdf655415 jdk7-b28
+4f91c08b3e4498213a9c5a24898f7d9c38cf86fb jdk7-b29
--- a/hotspot/agent/make/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/make/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/os/linux/ps_core.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/os/linux/ps_core.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/os/linux/ps_proc.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/os/linux/ps_proc.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/CommandProcessor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HSDB.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/HotSpotTypeDataBase.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/SALauncherLoader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/SALauncherLoader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/bugspot/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapSet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapValue.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/compiler/OopMapVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/Address.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/Address.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/Debugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/DebuggerBase.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/JVMDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescription.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescription.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAMD64.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionAMD64.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIA64.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIntelX86.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionIntelX86.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC32Bit.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC32Bit.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC64Bit.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/MachineDescriptionSPARC64Bit.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebuggerLocal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/DbxDebuggerLocal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dummy/DummyAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/linux/LinuxDebuggerLocal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/proc/ProcDebuggerLocal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/remote/RemoteDebuggerServer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Address.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Address.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Debugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32Debugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32DebuggerLocal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/win32/Win32DebuggerLocal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebugger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebugger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/windbg/WindbgDebuggerLocal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/jdi/SAJDIClassLoader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/BinaryTreeDictionary.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 /*
  * @(#)BinaryTreeDictionary.java
- * 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/CompactibleFreeListSpace.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/DefNewGeneration.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/FreeChunk.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/FreeList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 /*
  * @(#)FreeList.java
  *
- * 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/LinearAllocBlock.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 /*
  * @(#)BinaryTreeDictionary.java
- * 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/SystemDictionary.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/memory/Universe.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Array.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Array.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCache.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolCacheKlass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ConstantPoolKlass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/DefaultOopVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Instance.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/InstanceKlass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Klass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Mark.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjArray.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjArray.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHeap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogram.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogram.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/ObjectHistogramElement.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/Oop.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopPrinter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopUtilities.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/oops/OopVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/AddressVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/AddressVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/Frame.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/VM.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Field.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Type.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/Type.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicField.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicField.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicFieldWrapper.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicFieldWrapper.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicOopField.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicOopField.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/types/basic/BasicTypeDataBase.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/AnnotatedMemoryPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/AnnotatedMemoryPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/CommandProcessorPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/CommandProcessorPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/DebuggerConsolePanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/DebuggerConsolePanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/FindInHeapPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/FindInHeapPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/HighPrecisionJScrollBar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/HighPrecisionJScrollBar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/JFrameWrapper.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/JFrameWrapper.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/classbrowser/HTMLGenerator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/treetable/JTreeTable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/ui/treetable/JTreeTable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/AbstractHeapGraphWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/ReversePtrsAnalysis.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/agent/src/share/classes/sun/jvm/hotspot/utilities/RobustOopDeterminator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/hotspot/make/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/defs.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/defs.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/hotspot_distro	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/hotspot_distro	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 # 
-# Copyright 2006-2007 Sun Microsystems, Inc.  All rights reserved.
+# Copyright 2006-2008 Sun Microsystems, Inc.  All rights reserved.
 # SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 #
 
--- a/hotspot/make/hotspot_version	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/hotspot_version	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/jprt.config	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/jprt.config	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #!echo "This is not a shell script"
 #
-# 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/hotspot/make/jprt.properties	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/jprt.properties	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/linux/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/build.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/build.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# Copyright 1999-2001 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/hotspot/make/linux/makefiles/adjust-mflags.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/adjust-mflags.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# 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/hotspot/make/linux/makefiles/adlc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/adlc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/amd64.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/amd64.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/buildtree.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/buildtree.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/compiler1.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/compiler1.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/compiler2.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/compiler2.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/core.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/core.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/cscope.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/cscope.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/debug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/debug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/defs.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/defs.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/linux/makefiles/dtrace.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/dtrace.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/fastdebug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/fastdebug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/gcc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/gcc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/hp.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/hp.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/hp1.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/hp1.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/i486.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/i486.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/ia64.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/ia64.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/jsig.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/jsig.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/jvmg.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/jvmg.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/jvmti.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/jvmti.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/linux/makefiles/launcher.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/launcher.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/makedeps.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/makedeps.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/mapfile-vers-debug	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/mapfile-vers-debug	Mon Jul 07 09:11:55 2008 -0700
@@ -3,7 +3,7 @@
 #
 
 #
-# 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/hotspot/make/linux/makefiles/mapfile-vers-jsig	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/mapfile-vers-jsig	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/linux/makefiles/mapfile-vers-product	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/mapfile-vers-product	Mon Jul 07 09:11:55 2008 -0700
@@ -3,7 +3,7 @@
 #
 
 #
-# 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/hotspot/make/linux/makefiles/optimized.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/optimized.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/product.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/product.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/profiled.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/profiled.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/rules.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/rules.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/sa.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/sa.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/linux/makefiles/saproc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/saproc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/sparc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/sparc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/sparcWorks.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/sparcWorks.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/sparcv9.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/sparcv9.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/tiered.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/tiered.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/top.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/top.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/linux/makefiles/vm.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/linux/makefiles/vm.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/openjdk_distro	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/openjdk_distro	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/sa.files	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/sa.files	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/build.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/build.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# 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/hotspot/make/solaris/makefiles/adjust-mflags.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/adjust-mflags.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# 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/hotspot/make/solaris/makefiles/adlc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/adlc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/amd64.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/amd64.make	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 2004-2005 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/hotspot/make/solaris/makefiles/buildtree.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/buildtree.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/compiler1.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/compiler1.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/compiler2.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/compiler2.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/core.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/core.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/cscope.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/cscope.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/debug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/debug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/defs.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/defs.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/solaris/makefiles/dtrace.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/dtrace.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/fastdebug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/fastdebug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/gcc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/gcc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/hp.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/hp.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/hp1.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/hp1.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/i486.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/i486.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/jsig.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/jsig.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/jvmg.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/jvmg.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/jvmti.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/jvmti.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/launcher.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/launcher.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/makedeps.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/makedeps.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/mapfile-vers	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers	Mon Jul 07 09:11:55 2008 -0700
@@ -3,7 +3,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER1	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER1	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER2	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-COMPILER2	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-CORE	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-CORE	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-TIERED	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-TIERED	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-debug	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-debug	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-jsig	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-jsig	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-jvm_db	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-jvm_db	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-jvm_dtrace	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-jvm_dtrace	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/mapfile-vers-nonproduct	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/mapfile-vers-nonproduct	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #
 
 #
-# 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/hotspot/make/solaris/makefiles/optimized.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/optimized.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/product.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/product.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/profiled.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/profiled.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/rules.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/rules.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/sa.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/sa.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/solaris/makefiles/saproc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/saproc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/sparc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/sparc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/sparcWorks.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/sparcWorks.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/sparcv9.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/sparcv9.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/tiered.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/tiered.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/top.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/top.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/makefiles/vm.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/makefiles/vm.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/solaris/reorder.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/solaris/reorder.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #!/bin/sh -x
 #
-# 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/hotspot/make/test/Queens.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/test/Queens.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/build.bat	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/build.bat	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 @echo off
 REM
-REM Copyright 1997-2006 Sun Microsystems, Inc.  All Rights Reserved.
+REM Copyright 1997-2008 Sun Microsystems, Inc.  All Rights Reserved.
 REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 REM
 REM This code is free software; you can redistribute it and/or modify it
--- a/hotspot/make/windows/build.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/build.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/build_vm_def.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/build_vm_def.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/create.bat	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/create.bat	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 @echo off
 REM
-REM Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
+REM Copyright 1999-2008 Sun Microsystems, Inc.  All Rights Reserved.
 REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 REM
 REM This code is free software; you can redistribute it and/or modify it
--- a/hotspot/make/windows/cross_build.bat	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/cross_build.bat	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 @echo off
 REM
-REM Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+REM Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
 REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 REM
 REM This code is free software; you can redistribute it and/or modify it
--- a/hotspot/make/windows/get_msc_ver.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/get_msc_ver.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/adlc.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/adlc.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/compile.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/compile.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/debug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/debug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/defs.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/defs.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/windows/makefiles/fastdebug.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/fastdebug.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/generated.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/generated.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/jvmti.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/jvmti.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/makedeps.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/makedeps.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/product.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/product.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/rules.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/rules.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/sa.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/sa.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/make/windows/makefiles/sanity.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/sanity.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/shared.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/shared.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/top.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/top.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/makefiles/vm.make	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/makefiles/vm.make	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/projectfiles/common/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/projectfiles/common/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/projectfiles/compiler1/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/projectfiles/compiler1/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# 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/hotspot/make/windows/projectfiles/compiler2/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/projectfiles/compiler2/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/projectfiles/core/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/projectfiles/core/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/make/windows/projectfiles/tiered/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/make/windows/projectfiles/tiered/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/bytecodeInterpreter_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/c1_MacroAssembler_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/copy_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/copy_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/frame_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/register_definitions_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/register_definitions_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/relocInfo_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/relocInfo_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/sparc/vm/sparc.ad	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/sparc.ad	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/vm_version_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/sparc/vm/vtableStubs_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/assembler_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/assembler_x86_32.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86_32.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/assembler_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/assembler_x86_64.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/assembler_x86_64.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/frame_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/frame_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/frame_x86.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/nativeInst_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/nativeInst_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/nativeInst_x86.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/nativeInst_x86.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/register_definitions_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/relocInfo_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/relocInfo_x86.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/relocInfo_x86.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-1999 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/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/vm_version_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/vm_version_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/vm_version_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/x86_32.ad	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_32.ad	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/cpu/x86/vm/x86_64.ad	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/cpu/x86/vm/x86_64.ad	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/os/linux/vm/attachListener_linux.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/linux/vm/attachListener_linux.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/linux/vm/dtraceJSDT_linux.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/linux/vm/dtraceJSDT_linux.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/linux/vm/os_linux.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/linux/vm/os_linux.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/linux/vm/os_linux.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/linux/vm/os_linux.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/os/solaris/dtrace/jhelper.d	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/dtrace/jhelper.d	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/dtrace/libjvm_db.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/dtrace/libjvm_db.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/vm/dtraceJSDT_solaris.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/vm/os_solaris.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/vm/os_solaris.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/solaris/vm/os_solaris.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/solaris/vm/os_solaris.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/windows/vm/dtraceJSDT_windows.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/windows/vm/dtraceJSDT_windows.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/windows/vm/os_windows.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/windows/vm/os_windows.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os/windows/vm/os_windows.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os/windows/vm/os_windows.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/assembler_linux_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/atomic_linux_sparc.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/globals_linux_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.ad	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.ad	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/linux_sparc.s	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/orderAccess_linux_sparc.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/os_linux_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/hotspot/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/prefetch_linux_sparc.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/threadLS_linux_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/thread_linux_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/vmStructs_linux_sparc.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_sparc/vm/vm_version_linux_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_x86/vm/bytes_linux_x86.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2001 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/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/solaris_sparc.s	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_sparc/vm/thread_solaris_sparc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86_32.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86_32.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86_64.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/os_cpu/windows_x86/vm/assembler_windows_x86_64.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/archDesc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/archDesc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/forms.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/forms.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/forms.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/forms.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/formssel.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/formssel.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/output_c.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/output_c.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/adlc/output_h.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/adlc/output_h.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/asm/codeBuffer.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/asm/codeBuffer.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/asm/codeBuffer.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/asm/codeBuffer.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/c1/c1_LIR.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/c1/c1_LIR.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/c1/c1_Runtime1.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/c1/c1_Runtime1.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/bcEscapeAnalyzer.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciField.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciField.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciInstanceKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciInstanceKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciInstanceKlass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciInstanceKlass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciMethod.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciMethod.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciMethodBlocks.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciMethodBlocks.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciMethodBlocks.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciMethodBlocks.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/ci/ciMethodData.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciMethodData.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/ci/ciMethodData.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciMethodData.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/ci/ciObjectFactory.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/ci/ciObjectFactory.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/classFileParser.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/classFileParser.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/dictionary.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/dictionary.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/classfile/javaClasses.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/javaClasses.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/javaClasses.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/systemDictionary.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/systemDictionary.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/systemDictionary.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/verifier.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/verifier.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/vmSymbols.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/classfile/vmSymbols.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/classfile/vmSymbols.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/codeCache.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/codeCache.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/debugInfo.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/debugInfo.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/dependencies.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/dependencies.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/nmethod.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/nmethod.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/nmethod.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/nmethod.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/scopeDesc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/scopeDesc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/vmreg.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/vmreg.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/code/vmreg.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/code/vmreg.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/compiler/oopMap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/compiler/oopMap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/compiler/oopMap.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/compiler/oopMap.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/binaryTreeDictionary.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/compactibleFreeListSpace.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeBlockDictionary.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeChunk.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/freeList.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/includeDB_gc_concurrentMarkSweep	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 //
-// Copyright 2004-2006 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/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/includeDB_gc_parallelScavenge	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 //
-// Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/includeDB_gc_shared	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/includeDB_gc_shared	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 //
-// Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parNew/asParNewGeneration.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parGCAllocBuffer.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/asPSYoungGen.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2003 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/generationSizer.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parMarkBitMap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/prefetchQueue.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionLAB.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psYoungGen.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/allocationStats.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/immutableSpace.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/markSweep.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 
 /*
- * 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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableNUMASpace.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/mutableSpace.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_implementation/shared/vmGCOperations.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_interface/collectedHeap.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/includeDB_compiler1	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/includeDB_compiler1	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/includeDB_compiler2	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/includeDB_compiler2	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/includeDB_core	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/includeDB_core	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xml	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!-- 
-     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/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/bytecodeInterpreterWithChecks.xsl	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0"?> 
 <!-- 
-     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/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/interpreterRuntime.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/interpreter/oopMapCache.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/barrierSet.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/barrierSet.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/barrierSet.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/barrierSet.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2002 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/hotspot/src/share/vm/memory/cardTableModRefBS.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/cardTableModRefBS.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/cardTableModRefBS.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/cardTableModRefBS.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/cardTableRS.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/cardTableRS.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/cardTableRS.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/cardTableRS.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/collectorPolicy.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/collectorPolicy.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/collectorPolicy.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/collectorPolicy.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/compactingPermGenGen.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/defNewGeneration.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/defNewGeneration.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/defNewGeneration.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/defNewGeneration.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/defNewGeneration.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/defNewGeneration.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/dump.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/dump.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/memory/gcLocker.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/gcLocker.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/gcLocker.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/gcLocker.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/genCollectedHeap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/genCollectedHeap.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genCollectedHeap.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/genMarkSweep.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genMarkSweep.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/genOopClosures.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genOopClosures.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/genOopClosures.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genOopClosures.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/genRemSet.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genRemSet.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/genRemSet.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/genRemSet.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/generation.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/generation.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/generation.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/generation.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/heap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/heap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/heapInspection.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/heapInspection.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/heapInspection.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/heapInspection.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/iterator.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/iterator.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/modRefBarrierSet.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/modRefBarrierSet.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/permGen.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/permGen.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/permGen.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/permGen.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/referenceProcessor.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/referenceProcessor.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/referenceProcessor.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/referenceProcessor.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/restore.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/restore.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/serialize.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/serialize.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/memory/sharedHeap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/sharedHeap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/space.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/space.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/space.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/space.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/tenuredGeneration.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/tenuredGeneration.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/memory/universe.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/universe.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/memory/universe.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/memory/universe.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/arrayOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/arrayOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/constantPoolKlass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolKlass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/constantPoolOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/constantPoolOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/cpCacheKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/cpCacheKlass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheKlass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/cpCacheOop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/cpCacheOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/cpCacheOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/instanceKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/instanceKlass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/instanceKlassKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/instanceKlassKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/instanceOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/instanceOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/instanceRefKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/instanceRefKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/klass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/klass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/klass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/klass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/klassVtable.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/klassVtable.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/markOop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/markOop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-1999 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/hotspot/src/share/vm/oops/markOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/markOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/methodDataKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/methodDataKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/methodDataOop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/methodDataOop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/methodDataOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/methodDataOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/methodOop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/methodOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/methodOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/objArrayKlass.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/objArrayKlass.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/objArrayKlass.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/objArrayKlass.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/objArrayOop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/objArrayOop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997 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/hotspot/src/share/vm/oops/objArrayOop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/objArrayOop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/oop.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/oop.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/oop.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/oop.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/oop.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/oop.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/oop.pcgc.inline.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/oops/oopsHierarchy.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/oops/oopsHierarchy.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/addnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/addnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/buildOopMap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/buildOopMap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/bytecodeInfo.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/c2_globals.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/c2_globals.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/c2compiler.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/c2compiler.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/c2compiler.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/c2compiler.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/callnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/callnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/callnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/callnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/cfgnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/cfgnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/cfgnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/cfgnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/chaitin.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/chaitin.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/chaitin.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/classes.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/classes.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/compile.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/compile.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/compile.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/compile.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/connode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/connode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/connode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/connode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/divnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/divnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/doCall.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/doCall.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/escape.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/escape.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/escape.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/escape.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/gcm.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/gcm.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/graphKit.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/graphKit.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/hotspot/src/share/vm/opto/idealKit.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/idealKit.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/lcm.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/lcm.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/library_call.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/locknode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/locknode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/locknode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/locknode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/loopTransform.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/loopTransform.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/loopUnswitch.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/loopUnswitch.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/loopnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/loopnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/loopnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/loopnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/loopopts.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/loopopts.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/machnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/machnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/macro.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/macro.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/macro.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/macro.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/matcher.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/matcher.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/matcher.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/matcher.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/memnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/memnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/memnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/memnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/mulnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/mulnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/mulnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/mulnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/multnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/multnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/node.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/node.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/node.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/node.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/opcodes.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/opcodes.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/opcodes.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/opcodes.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/output.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/output.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/parse.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/parse.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/parse1.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/parse1.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/parse2.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/parse2.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/parse3.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/parse3.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/parseHelper.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/parseHelper.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/phaseX.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/phaseX.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/phaseX.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/phaseX.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/postaloc.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/postaloc.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/subnode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/subnode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/subnode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/subnode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/superword.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/superword.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/type.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/type.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/type.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/type.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/vectornode.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/vectornode.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/opto/vectornode.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/opto/vectornode.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/prims/forte.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/forte.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/prims/jni.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/jni.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/prims/jvm.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/jvm.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/prims/jvm.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/jvm.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiRedefineClassesTrace.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/jvmtiTagMap.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/prims/unsafe.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/prims/unsafe.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/arguments.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/arguments.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/arguments.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/atomic.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/atomic.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2003 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/hotspot/src/share/vm/runtime/atomic.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/atomic.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/biasedLocking.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/biasedLocking.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/deoptimization.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/deoptimization.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/deoptimization.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/deoptimization.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/dtraceJSDT.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/dtraceJSDT.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/dtraceJSDT.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/fprofiler.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/fprofiler.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/fprofiler.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/fprofiler.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/frame.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/frame.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/frame.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/frame.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/globals.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/globals.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/globals.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/globals.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/globals_extension.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/globals_extension.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/hpi.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/hpi.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/init.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/init.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/java.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/java.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/java.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/java.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/jniHandles.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/jniHandles.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/mutex.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/mutex.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 
 /*
- * 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/hotspot/src/share/vm/runtime/mutex.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/mutex.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/mutexLocker.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/mutexLocker.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/mutexLocker.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/os.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/os.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/os.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/os.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/reflection.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/reflection.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/sharedRuntime.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/sharedRuntime.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/stubCodeGenerator.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/task.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/task.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/task.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/task.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/thread.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/thread.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vframe.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vframe.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vframe.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vframe.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vframe_hp.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vframe_hp.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vmStructs.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vmStructs.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vm_operations.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vm_operations.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vm_version.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vm_version.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/runtime/vm_version.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/runtime/vm_version.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/services/heapDumper.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/services/heapDumper.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/services/threadService.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/services/threadService.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/src/share/vm/utilities/copy.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/copy.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/debug.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/debug.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/globalDefinitions.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/globalDefinitions_sparcWorks.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/ostream.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/ostream.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/ostream.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/ostream.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/taskqueue.hpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/taskqueue.hpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/src/share/vm/utilities/vmError.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/src/share/vm/utilities/vmError.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/hotspot/test/compiler/6659207/Test.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/test/compiler/6659207/Test.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/test/compiler/6661247/Test.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/test/compiler/6661247/Test.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/hotspot/test/compiler/6663621/IVTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/hotspot/test/compiler/6663621/IVTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jaxp/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/jaxp/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 da43cb85fac1646d6f97e4a35e510bbfdff97bdb jdk7-b26
 bafed478d67c3acf7744aaad88b9404261ea6739 jdk7-b27
 b996318955c0ad8e9fa0ffb56c74f626786e863f jdk7-b28
+617ee8607cfd5fd81f233f3c0b690f85084687a0 jdk7-b29
--- a/jaxp/make/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jaxp/make/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jaxws/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/jaxws/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 debd37e1a422e580edb086c95d6e89199133a39c jdk7-b26
 27d8f42862c11b4ddc4af2dd2d2a3cd86cda04c2 jdk7-b27
 eefcd5204500a11d6aa802dca9f961cf10ab64c2 jdk7-b28
+836c55713abab186e4de0c6eabd06ff008c7b8d0 jdk7-b29
--- a/jaxws/make/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jaxws/make/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 fb57027902e04ecafceae31a605e69b436c23d57 jdk7-b26
 3e599d98875ddf919c8ea11cff9b3a99ba631a9b jdk7-b27
 02e4c5348592a8d7fc2cba28bc5f8e35c0e17277 jdk7-b28
+e21f4266466cd1306b176aaa08b2cd8337a9be3d jdk7-b29
--- a/jdk/make/com/sun/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/com/sun/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/Defs-linux.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Defs-linux.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/Defs-solaris.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Defs-solaris.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/common/Defs-windows.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Defs-windows.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/Defs.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Defs.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/common/Release.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Release.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -369,6 +369,7 @@
 	com/sun/jarsigner	\
 	com/sun/mirror		\
 	com/sun/source          \
+	com/sun/tools/classfile \
 	com/sun/tools/doclets   \
 	com/sun/tools/example/debug/expr \
 	com/sun/tools/example/debug/tty  \
@@ -378,6 +379,7 @@
 	com/sun/tools/javadoc   \
 	com/sun/tools/apt       \
 	com/sun/tools/javah     \
+	com/sun/tools/javap     \
 	com/sun/tools/corba     \
 	com/sun/tools/internal/xjc       \
 	com/sun/tools/internal/ws       \
@@ -568,6 +570,8 @@
 	$(ECHO) "sun/tools/java/" >> $@
 	$(ECHO) "sun/tools/javac/" >> $@
 	$(ECHO) "sun/tools/javap/" >> $@
+	$(ECHO) "com/sun/tools/classfile/" >> $@
+	$(ECHO) "com/sun/tools/javap/" >> $@
 	$(ECHO) "sun/tools/jconsole/" >> $@
 	$(ECHO) "sun/tools/jps/" >> $@
 	$(ECHO) "sun/tools/jstat/" >> $@
--- a/jdk/make/common/Rules.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/Rules.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/common/internal/BinaryPlugs.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/internal/BinaryPlugs.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/internal/Defs-langtools.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/internal/Defs-langtools.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -31,13 +31,15 @@
       javax/tools
 
 IMPORT_TOOLS_PACKAGES +=            \
+      com/sun/javadoc               \
       com/sun/mirror                \
       com/sun/source                \
       com/sun/tools/apt             \
+      com/sun/tools/classfile       \
+      com/sun/tools/doclets         \
       com/sun/tools/javac           \
-      com/sun/tools/javah           \
       com/sun/tools/javadoc         \
-      com/sun/tools/doclets         \
-      com/sun/javadoc               \
+      com/sun/tools/javah           \
+      com/sun/tools/javap           \
       sun/tools/javap
 
--- a/jdk/make/common/shared/Compiler-gcc.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Compiler-gcc.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/shared/Compiler-msvc.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Compiler-msvc.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/shared/Compiler-sun.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Compiler-sun.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/shared/Defs-control.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Defs-control.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/common/shared/Defs-utils.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Defs-utils.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/shared/Platform.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Platform.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/common/shared/Sanity.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/common/shared/Sanity.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/docs/CORE_PKGS.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/docs/CORE_PKGS.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/docs/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/docs/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/docs/NON_CORE_PKGS.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/docs/NON_CORE_PKGS.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/awt/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/awt/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/java/java/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/java/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/java/genlocales.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/java/genlocales.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/java/localegen.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/java/localegen.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# 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/jdk/make/java/java/mapfile-vers	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/java/mapfile-vers	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/jli/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/jli/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/main/java/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/main/java/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/main/javaw/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/main/javaw/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/nio/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/nio/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/java/nio/genCharsetProvider.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/nio/genCharsetProvider.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# Copyright 2004-2005 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/jdk/make/java/nio/genExceptions.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/nio/genExceptions.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 #! /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
--- a/jdk/make/java/sun_nio/FILES_java.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/java/sun_nio/FILES_java.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/javax/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/javax/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/javax/others/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/javax/others/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/jdk_generic_profile.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/jdk_generic_profile.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# 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/jdk/make/jprt.config	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/jprt.config	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!echo "This is not a shell script"
 #############################################################################
 #
-# 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
--- a/jdk/make/sun/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk/make/sun/cmm/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/cmm/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/make/sun/font/FILES_c.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/font/FILES_c.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/make/sun/font/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/font/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/sun/jawt/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/jawt/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/sun/splashscreen/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/sun/splashscreen/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/tools/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/tools/freetypecheck/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/freetypecheck/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/tools/freetypecheck/freetypecheck.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/freetypecheck/freetypecheck.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/tools/src/build/tools/jdwpgen/CommandNode.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/src/build/tools/jdwpgen/CommandNode.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/src/build/tools/jdwpgen/ConstantSetNode.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/make/tools/src/build/tools/jdwpgen/RepeatNode.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/make/tools/src/build/tools/jdwpgen/RepeatNode.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/bin/java.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/bin/java.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/bin/main.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/bin/main.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageReader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFImageReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKColorChooserPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKFileChooserUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKLookAndFeel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/GTKStyle.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifGraphicsUtils.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifGraphicsUtils.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifInternalFrameTitlePane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/motif/MotifLookAndFeel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -1222,9 +1222,7 @@
             "FileChooser.enterFileNameLabelMnemonic", new Integer (KeyEvent.VK_N), // 'n'
             "FileChooser.ancestorInputMap",
                new UIDefaults.LazyInputMap(new Object[] {
-                     "ESCAPE", "cancelSelection",
-                     "ENTER", "approveSelection",
-                "ctrl ENTER", "approveSelection"
+                     "ESCAPE", "cancelSelection"
                  }),
 
 
--- a/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/java/swing/plaf/windows/WindowsLookAndFeel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -825,9 +825,7 @@
                      "ESCAPE", "cancelSelection",
                      "F2", "editFileName",
                      "F5", "refresh",
-                     "BACK_SPACE", "Go Up",
-                     "ENTER", "approveSelection",
-                "ctrl ENTER", "approveSelection"
+                     "BACK_SPACE", "Go Up"
                  }),
 
             "FileView.directoryIcon", SwingUtilities2.makeIcon(getClass(),
--- a/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/mbeanserver/ConvertingMethod.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/ConvertingMethod.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -31,13 +31,15 @@
 
 import javax.management.Descriptor;
 import javax.management.MBeanException;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
 import javax.management.openmbean.OpenDataException;
 import javax.management.openmbean.OpenType;
 
 final class ConvertingMethod {
-    static ConvertingMethod from(Method m) {
+    static ConvertingMethod from(Method m, MXBeanMappingFactory mappingFactory) {
         try {
-            return new ConvertingMethod(m);
+            return new ConvertingMethod(m, mappingFactory);
         } catch (OpenDataException ode) {
             final String msg = "Method " + m.getDeclaringClass().getName() +
                 "." + m.getName() + " has parameter or return type that " +
@@ -67,13 +69,13 @@
     }
 
     OpenType getOpenReturnType() {
-        return returnConverter.getOpenType();
+        return returnMapping.getOpenType();
     }
 
     OpenType[] getOpenParameterTypes() {
-        final OpenType[] types = new OpenType[paramConverters.length];
-        for (int i = 0; i < paramConverters.length; i++)
-            types[i] = paramConverters[i].getOpenType();
+        final OpenType[] types = new OpenType[paramMappings.length];
+        for (int i = 0; i < paramMappings.length; i++)
+            types[i] = paramMappings[i].getOpenType();
         return types;
     }
 
@@ -85,9 +87,9 @@
      * value will be converted to an Open Type, so if it is convertible
      * at all there is no further check needed.
      */
-    void checkCallFromOpen() throws IllegalArgumentException {
+    void checkCallFromOpen() {
         try {
-            for (OpenConverter paramConverter : paramConverters)
+            for (MXBeanMapping paramConverter : paramMappings)
                 paramConverter.checkReconstructible();
         } catch (InvalidObjectException e) {
             throw new IllegalArgumentException(e);
@@ -102,32 +104,32 @@
      * open types, so if it is convertible at all there is no further
      * check needed.
      */
-    void checkCallToOpen() throws IllegalArgumentException {
+    void checkCallToOpen() {
         try {
-            returnConverter.checkReconstructible();
+            returnMapping.checkReconstructible();
         } catch (InvalidObjectException e) {
             throw new IllegalArgumentException(e);
         }
     }
 
     String[] getOpenSignature() {
-        if (paramConverters.length == 0)
+        if (paramMappings.length == 0)
             return noStrings;
 
-        String[] sig = new String[paramConverters.length];
-        for (int i = 0; i < paramConverters.length; i++)
-            sig[i] = paramConverters[i].getOpenClass().getName();
+        String[] sig = new String[paramMappings.length];
+        for (int i = 0; i < paramMappings.length; i++)
+            sig[i] = paramMappings[i].getOpenClass().getName();
         return sig;
     }
 
     final Object toOpenReturnValue(MXBeanLookup lookup, Object ret)
             throws OpenDataException {
-        return returnConverter.toOpenValue(lookup, ret);
+        return returnMapping.toOpenValue(ret);
     }
 
     final Object fromOpenReturnValue(MXBeanLookup lookup, Object ret)
             throws InvalidObjectException {
-        return returnConverter.fromOpenValue(lookup, ret);
+        return returnMapping.fromOpenValue(ret);
     }
 
     final Object[] toOpenParameters(MXBeanLookup lookup, Object[] params)
@@ -136,17 +138,17 @@
             return params;
         final Object[] oparams = new Object[params.length];
         for (int i = 0; i < params.length; i++)
-            oparams[i] = paramConverters[i].toOpenValue(lookup, params[i]);
+            oparams[i] = paramMappings[i].toOpenValue(params[i]);
         return oparams;
     }
 
-    final Object[] fromOpenParameters(MXBeanLookup lookup, Object[] params)
+    final Object[] fromOpenParameters(Object[] params)
             throws InvalidObjectException {
         if (paramConversionIsIdentity || params == null)
             return params;
         final Object[] jparams = new Object[params.length];
         for (int i = 0; i < params.length; i++)
-            jparams[i] = paramConverters[i].fromOpenValue(lookup, params[i]);
+            jparams[i] = paramMappings[i].fromOpenValue(params[i]);
         return jparams;
     }
 
@@ -154,23 +156,35 @@
                                  Object param,
                                  int paramNo)
         throws OpenDataException {
-        return paramConverters[paramNo].toOpenValue(lookup, param);
+        return paramMappings[paramNo].toOpenValue(param);
     }
 
     final Object fromOpenParameter(MXBeanLookup lookup,
                                    Object param,
                                    int paramNo)
         throws InvalidObjectException {
-        return paramConverters[paramNo].fromOpenValue(lookup, param);
+        return paramMappings[paramNo].fromOpenValue(param);
     }
 
     Object invokeWithOpenReturn(MXBeanLookup lookup,
                                 Object obj, Object[] params)
             throws MBeanException, IllegalAccessException,
                    InvocationTargetException {
+        MXBeanLookup old = MXBeanLookup.getLookup();
+        try {
+            MXBeanLookup.setLookup(lookup);
+            return invokeWithOpenReturn(obj, params);
+        } finally {
+            MXBeanLookup.setLookup(old);
+        }
+    }
+
+    private Object invokeWithOpenReturn(Object obj, Object[] params)
+            throws MBeanException, IllegalAccessException,
+                   InvocationTargetException {
         final Object[] javaParams;
         try {
-            javaParams = fromOpenParameters(lookup, params);
+            javaParams = fromOpenParameters(params);
         } catch (InvalidObjectException e) {
             // probably can't happen
             final String msg = methodName() + ": cannot convert parameters " +
@@ -179,7 +193,7 @@
         }
         final Object javaReturn = method.invoke(obj, javaParams);
         try {
-            return returnConverter.toOpenValue(lookup, javaReturn);
+            return returnMapping.toOpenValue(javaReturn);
         } catch (OpenDataException e) {
             // probably can't happen
             final String msg = methodName() + ": cannot convert return " +
@@ -192,15 +206,17 @@
         return method.getDeclaringClass() + "." + method.getName();
     }
 
-    private ConvertingMethod(Method m) throws OpenDataException {
+    private ConvertingMethod(Method m, MXBeanMappingFactory mappingFactory)
+    throws OpenDataException {
         this.method = m;
-        returnConverter = OpenConverter.toConverter(m.getGenericReturnType());
+        returnMapping =
+                mappingFactory.mappingForType(m.getGenericReturnType(), mappingFactory);
         Type[] params = m.getGenericParameterTypes();
-        paramConverters = new OpenConverter[params.length];
+        paramMappings = new MXBeanMapping[params.length];
         boolean identity = true;
         for (int i = 0; i < params.length; i++) {
-            paramConverters[i] = OpenConverter.toConverter(params[i]);
-            identity &= paramConverters[i].isIdentity();
+            paramMappings[i] = mappingFactory.mappingForType(params[i], mappingFactory);
+            identity &= DefaultMXBeanMappingFactory.isIdentity(paramMappings[i]);
         }
         paramConversionIsIdentity = identity;
     }
@@ -208,7 +224,7 @@
     private static final String[] noStrings = new String[0];
 
     private final Method method;
-    private final OpenConverter returnConverter;
-    private final OpenConverter[] paramConverters;
+    private final MXBeanMapping returnMapping;
+    private final MXBeanMapping[] paramMappings;
     private final boolean paramConversionIsIdentity;
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/DefaultMXBeanMappingFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,1519 @@
+/*
+ * 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.  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.mbeanserver;
+
+import static com.sun.jmx.mbeanserver.Util.*;
+import java.lang.annotation.ElementType;
+import javax.management.openmbean.MXBeanMappingClass;
+
+import static javax.management.openmbean.SimpleType.*;
+
+import com.sun.jmx.remote.util.EnvHelp;
+
+import java.beans.ConstructorProperties;
+import java.io.InvalidObjectException;
+import java.lang.annotation.ElementType;
+import java.lang.ref.WeakReference;
+import java.lang.reflect.Array;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.WeakHashMap;
+
+import javax.management.JMX;
+import javax.management.ObjectName;
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataInvocationHandler;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeDataView;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+/**
+ *   <p>A converter between Java types and the limited set of classes
+ *   defined by Open MBeans.</p>
+ *
+ *   <p>A Java type is an instance of java.lang.reflect.Type.  For our
+ *   purposes, it is either a Class, such as String.class or int.class;
+ *   or a ParameterizedType, such as List<String> or Map<Integer,
+ *   String[]>.  On J2SE 1.4 and earlier, it can only be a Class.</p>
+ *
+ *   <p>Each Type is associated with an DefaultMXBeanMappingFactory.  The
+ *   DefaultMXBeanMappingFactory defines an OpenType corresponding to the Type, plus a
+ *   Java class corresponding to the OpenType.  For example:</p>
+ *
+ *   <pre>
+ *   Type                     Open class     OpenType
+ *   ----                     ----------     --------
+ *   Integer                Integer        SimpleType.INTEGER
+ *   int                            int            SimpleType.INTEGER
+ *   Integer[]              Integer[]      ArrayType(1, SimpleType.INTEGER)
+ *   int[]                  Integer[]      ArrayType(SimpleType.INTEGER, true)
+ *   String[][]             String[][]     ArrayType(2, SimpleType.STRING)
+ *   List<String>                   String[]       ArrayType(1, SimpleType.STRING)
+ *   ThreadState (an Enum)    String         SimpleType.STRING
+ *   Map<Integer, String[]>   TabularData          TabularType(
+ *                                           CompositeType(
+ *                                             {"key", SimpleType.INTEGER},
+ *                                             {"value",
+ *                                               ArrayType(1,
+ *                                                SimpleType.STRING)}),
+ *                                           indexNames={"key"})
+ *   </pre>
+ *
+ *   <p>Apart from simple types, arrays, and collections, Java types are
+ *   converted through introspection into CompositeType.  The Java type
+ *   must have at least one getter (method such as "int getSize()" or
+ *   "boolean isBig()"), and we must be able to deduce how to
+ *   reconstruct an instance of the Java class from the values of the
+ *   getters using one of various heuristics.</p>
+ *
+ * @since 1.6
+ */
+public class DefaultMXBeanMappingFactory extends MXBeanMappingFactory {
+    static abstract class NonNullMXBeanMapping extends MXBeanMapping {
+        NonNullMXBeanMapping(Type javaType, OpenType openType) {
+            super(javaType, openType);
+        }
+
+        @Override
+        public final Object fromOpenValue(Object openValue)
+        throws InvalidObjectException {
+            if (openValue == null)
+                return null;
+            else
+                return fromNonNullOpenValue(openValue);
+        }
+
+        @Override
+        public final Object toOpenValue(Object javaValue) throws OpenDataException {
+            if (javaValue == null)
+                return null;
+            else
+                return toNonNullOpenValue(javaValue);
+        }
+
+        abstract Object fromNonNullOpenValue(Object openValue)
+        throws InvalidObjectException;
+
+        abstract Object toNonNullOpenValue(Object javaValue)
+        throws OpenDataException;
+
+        /**
+         * <p>True if and only if this MXBeanMapping's toOpenValue and
+         * fromOpenValue methods are the identity function.</p>
+         */
+        boolean isIdentity() {
+            return false;
+        }
+    }
+
+    static boolean isIdentity(MXBeanMapping mapping) {
+        return (mapping instanceof NonNullMXBeanMapping &&
+                ((NonNullMXBeanMapping) mapping).isIdentity());
+    }
+
+    private static final class Mappings
+        extends WeakHashMap<Type, WeakReference<MXBeanMapping>> {}
+
+    private static final Map<MXBeanMappingFactory, Mappings> factoryMappings =
+            new WeakHashMap<MXBeanMappingFactory, Mappings>();
+
+    private static final Map<Type, MXBeanMapping> permanentMappings = newMap();
+
+    private static synchronized MXBeanMapping getMapping(
+            Type type, MXBeanMappingFactory factory) {
+        Mappings mappings = factoryMappings.get(factory);
+        if (mappings == null) {
+            mappings = new Mappings();
+            factoryMappings.put(factory, mappings);
+        }
+        WeakReference<MXBeanMapping> wr = mappings.get(type);
+        return (wr == null) ? null : wr.get();
+    }
+
+    private static synchronized void putMapping(
+            Type type, MXBeanMapping mapping, MXBeanMappingFactory factory) {
+        Mappings mappings = factoryMappings.get(factory);
+        if (mappings == null) {
+            mappings = new Mappings();
+            factoryMappings.put(factory, mappings);
+        }
+        WeakReference<MXBeanMapping> wr =
+            new WeakReference<MXBeanMapping>(mapping);
+        mappings.put(type, wr);
+    }
+
+    static {
+        /* Set up the mappings for Java types that map to SimpleType.  */
+
+        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;
+            try {
+                c = Class.forName(t.getClassName(), false,
+                                  ObjectName.class.getClassLoader());
+            } catch (ClassNotFoundException e) {
+                // the classes that these predefined types declare must exist!
+                throw new Error(e);
+            }
+            final MXBeanMapping mapping = new IdentityMapping(c, t);
+            permanentMappings.put(c, mapping);
+
+            if (c.getName().startsWith("java.lang.")) {
+                try {
+                    final Field typeField = c.getField("TYPE");
+                    final Class<?> primitiveType = (Class<?>) typeField.get(null);
+                    final MXBeanMapping primitiveMapping =
+                        new IdentityMapping(primitiveType, t);
+                    permanentMappings.put(primitiveType, primitiveMapping);
+                    if (primitiveType != void.class) {
+                        final Class<?> primitiveArrayType =
+                            Array.newInstance(primitiveType, 0).getClass();
+                        final OpenType primitiveArrayOpenType =
+                            ArrayType.getPrimitiveArrayType(primitiveArrayType);
+                        final MXBeanMapping primitiveArrayMapping =
+                            new IdentityMapping(primitiveArrayType,
+                                                primitiveArrayOpenType);
+                        permanentMappings.put(primitiveArrayType,
+                                              primitiveArrayMapping);
+                    }
+                } catch (NoSuchFieldException e) {
+                    // OK: must not be a primitive wrapper
+                } catch (IllegalAccessException e) {
+                    // Should not reach here
+                    assert(false);
+                }
+            }
+        }
+    }
+
+    /** Get the converter for the given Java type, creating it if necessary. */
+    @Override
+    public synchronized MXBeanMapping mappingForType(Type objType,
+                                                     MXBeanMappingFactory factory)
+            throws OpenDataException {
+        if (inProgress.containsKey(objType))
+            throw new OpenDataException("Recursive data structure");
+
+        MXBeanMapping mapping;
+
+        mapping = getMapping(objType, null);
+        if (mapping != null)
+            return mapping;
+
+        inProgress.put(objType, objType);
+        try {
+            mapping = makeMapping(objType, factory);
+        } finally {
+            inProgress.remove(objType);
+        }
+
+        putMapping(objType, mapping, factory);
+        return mapping;
+    }
+
+    private MXBeanMapping makeMapping(Type objType, MXBeanMappingFactory factory)
+    throws OpenDataException {
+
+        /* It's not yet worth formalizing these tests by having for example
+           an array of factory classes, each of which says whether it
+           recognizes the Type (Chain of Responsibility pattern).  */
+        MXBeanMapping mapping = permanentMappings.get(objType);
+        if (mapping != null)
+            return mapping;
+        Class<?> erasure = erasure(objType);
+        MXBeanMappingClass mappingClass =
+                erasure.getAnnotation(MXBeanMappingClass.class);
+        if (mappingClass != null)
+            return makeAnnotationMapping(mappingClass, objType, factory);
+        if (objType instanceof GenericArrayType) {
+            Type componentType =
+                ((GenericArrayType) objType).getGenericComponentType();
+            return makeArrayOrCollectionMapping(objType, componentType, factory);
+        } 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);
+            } else if (objClass.isArray()) {
+                Type componentType = objClass.getComponentType();
+                return makeArrayOrCollectionMapping(objClass, componentType,
+                        factory);
+            } else if (JMX.isMXBeanInterface(objClass)) {
+                return makeMXBeanRefMapping(objClass);
+            } else {
+                return makeCompositeMapping(objClass, factory);
+            }
+        } else if (objType instanceof ParameterizedType) {
+            return makeParameterizedTypeMapping((ParameterizedType) objType,
+                                                factory);
+        } else
+            throw new OpenDataException("Cannot map type: " + objType);
+    }
+
+    private static MXBeanMapping
+            makeAnnotationMapping(MXBeanMappingClass mappingClass,
+                                  Type objType,
+                                  MXBeanMappingFactory factory)
+    throws OpenDataException {
+        Class<? extends MXBeanMapping> c = mappingClass.value();
+        Constructor<? extends MXBeanMapping> cons;
+        try {
+            cons = c.getConstructor(Type.class);
+        } catch (NoSuchMethodException e) {
+            final String msg =
+                    "Annotation @" + MXBeanMappingClass.class.getName() +
+                    " must name a class with a public constructor that has a " +
+                    "single " + Type.class.getName() + " argument";
+            OpenDataException ode = new OpenDataException(msg);
+            ode.initCause(e);
+            throw ode;
+        }
+        try {
+            return cons.newInstance(objType);
+        } catch (Exception e) {
+            final String msg =
+                    "Could not construct a " + c.getName() + " for @" +
+                    MXBeanMappingClass.class.getName();
+            OpenDataException ode = new OpenDataException(msg);
+            ode.initCause(e);
+            throw ode;
+        }
+    }
+
+    private static Class<?> erasure(Type t) {
+        if (t instanceof Class<?>)
+            return (Class<?>) t;
+        if (t instanceof ParameterizedType)
+            return erasure(((ParameterizedType) t).getRawType());
+        /* Other cases: GenericArrayType, TypeVariable, WildcardType.
+         * Returning the erasure of GenericArrayType is not necessary because
+         * anyway we will be recursing on the element type, and we'll erase
+         * then.  Returning the erasure of the other two would mean returning
+         * the type bound (e.g. Foo in <T extends Foo> or <? extends Foo>)
+         * and since we don't treat this as Foo elsewhere we shouldn't here.
+         */
+        return Object.class;
+    }
+
+    private static <T extends Enum<T>> MXBeanMapping
+            makeEnumMapping(Class enumClass, Class<T> fake) {
+        return new EnumMapping<T>(Util.<Class<T>>cast(enumClass));
+    }
+
+    /* Make the converter for an array type, or a collection such as
+     * List<String> or Set<Integer>.  We never see one-dimensional
+     * primitive arrays (e.g. int[]) here because they use the identity
+     * converter and are registered as such in the static initializer.
+     */
+    private MXBeanMapping
+        makeArrayOrCollectionMapping(Type collectionType, Type elementType,
+                                     MXBeanMappingFactory factory)
+            throws OpenDataException {
+
+        final MXBeanMapping elementMapping = factory.mappingForType(elementType, factory);
+        final OpenType<?> elementOpenType = elementMapping.getOpenType();
+        final ArrayType<?> openType = ArrayType.getArrayType(elementOpenType);
+        final Class<?> elementOpenClass = elementMapping.getOpenClass();
+
+        final Class<?> openArrayClass;
+        final String openArrayClassName;
+        if (elementOpenClass.isArray())
+            openArrayClassName = "[" + elementOpenClass.getName();
+        else
+            openArrayClassName = "[L" + elementOpenClass.getName() + ";";
+        try {
+            openArrayClass = Class.forName(openArrayClassName);
+        } catch (ClassNotFoundException e) {
+            throw openDataException("Cannot obtain array class", e);
+        }
+
+        if (collectionType instanceof ParameterizedType) {
+            return new CollectionMapping(collectionType,
+                                         openType, openArrayClass,
+                                         elementMapping);
+        } else {
+            if (isIdentity(elementMapping)) {
+                return new IdentityMapping(collectionType,
+                                           openType);
+            } else {
+                return new ArrayMapping(collectionType,
+                                          openType,
+                                          openArrayClass,
+                                          elementMapping);
+            }
+        }
+    }
+
+    private static final String[] keyArray = {"key"};
+    private static final String[] keyValueArray = {"key", "value"};
+
+    private MXBeanMapping
+        makeTabularMapping(Type objType, boolean sortedMap,
+                           Type keyType, Type valueType,
+                           MXBeanMappingFactory factory)
+            throws OpenDataException {
+
+        final String objTypeName = objType.toString();
+        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 CompositeType rowType =
+            new CompositeType(objTypeName,
+                              objTypeName,
+                              keyValueArray,
+                              keyValueArray,
+                              new OpenType[] {keyOpenType, valueOpenType});
+        final TabularType tabularType =
+            new TabularType(objTypeName, objTypeName, rowType, keyArray);
+        return new TabularMapping(objType, sortedMap, tabularType,
+                                    keyMapping, valueMapping);
+    }
+
+    /* We know how to translate List<E>, Set<E>, SortedSet<E>,
+       Map<K,V>, SortedMap<K,V>, and that's it.  We don't accept
+       subtypes of those because we wouldn't know how to deserialize
+       them.  We don't accept Queue<E> because it is unlikely people
+       would use that as a parameter or return type in an MBean.  */
+    private MXBeanMapping
+            makeParameterizedTypeMapping(ParameterizedType objType,
+                                         MXBeanMappingFactory factory)
+            throws OpenDataException {
+
+        final Type rawType = objType.getRawType();
+
+        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);
+                if (c == SortedSet.class)
+                    mustBeComparable(c, actuals[0]);
+                return makeArrayOrCollectionMapping(objType, actuals[0], factory);
+            } else {
+                boolean sortedMap = (c == SortedMap.class);
+                if (c == Map.class || sortedMap) {
+                    Type[] actuals = objType.getActualTypeArguments();
+                    assert(actuals.length == 2);
+                    if (sortedMap)
+                        mustBeComparable(c, actuals[0]);
+                    return makeTabularMapping(objType, sortedMap,
+                            actuals[0], actuals[1], factory);
+                }
+            }
+        }
+        throw new OpenDataException("Cannot convert type: " + objType);
+    }
+
+    private static MXBeanMapping makeMXBeanRefMapping(Type t)
+            throws OpenDataException {
+        return new MXBeanRefMapping(t);
+    }
+
+    private MXBeanMapping makeCompositeMapping(Class c,
+                                               MXBeanMappingFactory factory)
+            throws OpenDataException {
+
+        // For historical reasons GcInfo implements CompositeData but we
+        // shouldn't count its CompositeData.getCompositeType() field as
+        // an item in the computed CompositeType.
+        final boolean gcInfoHack =
+            (c.getName().equals("com.sun.management.GcInfo") &&
+                c.getClassLoader() == null);
+
+        final List<Method> methods =
+                MBeanAnalyzer.eliminateCovariantMethods(Arrays.asList(c.getMethods()));
+        final SortedMap<String,Method> getterMap = newSortedMap();
+
+        /* Select public methods that look like "T getX()" or "boolean
+           isX()", where T is not void and X is not the empty
+           string.  Exclude "Class getClass()" inherited from Object.  */
+        for (Method method : methods) {
+            final String propertyName = propertyName(method);
+
+            if (propertyName == null)
+                continue;
+            if (gcInfoHack && propertyName.equals("CompositeType"))
+                continue;
+
+            Method old =
+                getterMap.put(decapitalize(propertyName),
+                            method);
+            if (old != null) {
+                final String msg =
+                    "Class " + c.getName() + " has method name clash: " +
+                    old.getName() + ", " + method.getName();
+                throw new OpenDataException(msg);
+            }
+        }
+
+        final int nitems = getterMap.size();
+
+        if (nitems == 0) {
+            throw new OpenDataException("Can't map " + c.getName() +
+                                        " to an open data type");
+        }
+
+        final Method[] getters = new Method[nitems];
+        final String[] itemNames = new String[nitems];
+        final OpenType[] openTypes = new OpenType[nitems];
+        int i = 0;
+        for (Map.Entry<String,Method> entry : getterMap.entrySet()) {
+            itemNames[i] = entry.getKey();
+            final Method getter = entry.getValue();
+            getters[i] = getter;
+            final Type retType = getter.getGenericReturnType();
+            openTypes[i] = factory.mappingForType(retType, factory).getOpenType();
+            i++;
+        }
+
+        CompositeType compositeType =
+            new CompositeType(c.getName(),
+                              c.getName(),
+                              itemNames, // field names
+                              itemNames, // field descriptions
+                              openTypes);
+
+        return new CompositeMapping(c,
+                                    compositeType,
+                                    itemNames,
+                                    getters,
+                                    factory);
+    }
+
+    /* Converter for classes where the open data is identical to the
+       original data.  This is true for any of the SimpleType types,
+       and for an any-dimension array of those.  It is also true for
+       primitive types as of JMX 1.3, since an int[]
+       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) {
+            super(targetType, openType);
+        }
+
+        boolean isIdentity() {
+            return true;
+        }
+
+        @Override
+        Object fromNonNullOpenValue(Object openValue)
+        throws InvalidObjectException {
+            return openValue;
+        }
+
+        @Override
+        Object toNonNullOpenValue(Object javaValue) throws OpenDataException {
+            return javaValue;
+        }
+    }
+
+    private static final class EnumMapping<T extends Enum<T>>
+            extends NonNullMXBeanMapping {
+
+        EnumMapping(Class<T> enumClass) {
+            super(enumClass, SimpleType.STRING);
+            this.enumClass = enumClass;
+        }
+
+        @Override
+        final Object toNonNullOpenValue(Object value) {
+            return ((Enum) value).name();
+        }
+
+        @Override
+        final T fromNonNullOpenValue(Object value)
+                throws InvalidObjectException {
+            try {
+                return Enum.valueOf(enumClass, (String) value);
+            } catch (Exception e) {
+                throw invalidObjectException("Cannot convert to enum: " +
+                                             value, e);
+            }
+        }
+
+        private final Class<T> enumClass;
+    }
+
+    private static final class ArrayMapping extends NonNullMXBeanMapping {
+        ArrayMapping(Type targetType,
+                     ArrayType openArrayType, Class openArrayClass,
+                     MXBeanMapping elementMapping) {
+            super(targetType, openArrayType);
+            this.elementMapping = elementMapping;
+        }
+
+        @Override
+        final Object toNonNullOpenValue(Object value)
+                throws OpenDataException {
+            Object[] valueArray = (Object[]) value;
+            final int len = valueArray.length;
+            final Object[] openArray = (Object[])
+                Array.newInstance(getOpenClass().getComponentType(), len);
+            for (int i = 0; i < len; i++)
+                openArray[i] = elementMapping.toOpenValue(valueArray[i]);
+            return openArray;
+        }
+
+        @Override
+        final Object fromNonNullOpenValue(Object openValue)
+                throws InvalidObjectException {
+            final Object[] openArray = (Object[]) openValue;
+            final Type javaType = getJavaType();
+            final Object[] valueArray;
+            final Type componentType;
+            if (javaType instanceof GenericArrayType) {
+                componentType =
+                    ((GenericArrayType) javaType).getGenericComponentType();
+            } else if (javaType instanceof Class &&
+                       ((Class<?>) javaType).isArray()) {
+                componentType = ((Class<?>) javaType).getComponentType();
+            } else {
+                throw new IllegalArgumentException("Not an array: " +
+                                                   javaType);
+            }
+            valueArray = (Object[]) Array.newInstance((Class<?>) componentType,
+                                                      openArray.length);
+            for (int i = 0; i < openArray.length; i++)
+                valueArray[i] = elementMapping.fromOpenValue(openArray[i]);
+            return valueArray;
+        }
+
+        public void checkReconstructible() throws InvalidObjectException {
+            elementMapping.checkReconstructible();
+        }
+
+        /**
+         * DefaultMXBeanMappingFactory for the elements of this array.  If this is an
+         *          array of arrays, the converter converts the second-level arrays,
+         *          not the deepest elements.
+         */
+        private final MXBeanMapping elementMapping;
+    }
+
+    private static final class CollectionMapping extends NonNullMXBeanMapping {
+        CollectionMapping(Type targetType,
+                          ArrayType openArrayType,
+                          Class openArrayClass,
+                          MXBeanMapping elementMapping) {
+            super(targetType, openArrayType);
+            this.elementMapping = elementMapping;
+
+            /* Determine the concrete class to be used when converting
+               back to this Java type.  We convert all Lists to ArrayList
+               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;
+            if (c == List.class)
+                collectionClass = ArrayList.class;
+            else if (c == Set.class)
+                collectionClass = HashSet.class;
+            else if (c == SortedSet.class)
+                collectionClass = TreeSet.class;
+            else { // can't happen
+                assert(false);
+                collectionClass = null;
+            }
+        }
+
+        @Override
+        final Object toNonNullOpenValue(Object value)
+                throws OpenDataException {
+            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: " +
+                        comparator;
+                    throw new OpenDataException(msg);
+                }
+            }
+            final Object[] openArray = (Object[])
+                Array.newInstance(getOpenClass().getComponentType(),
+                                  valueCollection.size());
+            int i = 0;
+            for (Object o : valueCollection)
+                openArray[i++] = elementMapping.toOpenValue(o);
+            return openArray;
+        }
+
+        @Override
+        final Object fromNonNullOpenValue(Object openValue)
+                throws InvalidObjectException {
+            final Object[] openArray = (Object[]) openValue;
+            final Collection<Object> valueCollection;
+            try {
+                valueCollection = cast(collectionClass.newInstance());
+            } catch (Exception e) {
+                throw invalidObjectException("Cannot create collection", e);
+            }
+            for (Object o : openArray) {
+                Object value = elementMapping.fromOpenValue(o);
+                if (!valueCollection.add(value)) {
+                    final String msg =
+                        "Could not add " + o + " to " +
+                        collectionClass.getName() +
+                        " (duplicate set element?)";
+                    throw new InvalidObjectException(msg);
+                }
+            }
+            return valueCollection;
+        }
+
+        public void checkReconstructible() throws InvalidObjectException {
+            elementMapping.checkReconstructible();
+        }
+
+        private final Class<? extends Collection> collectionClass;
+        private final MXBeanMapping elementMapping;
+    }
+
+    private static final class MXBeanRefMapping extends NonNullMXBeanMapping {
+        MXBeanRefMapping(Type intf) {
+            super(intf, SimpleType.OBJECTNAME);
+        }
+
+        @Override
+        final Object toNonNullOpenValue(Object javaValue)
+                throws OpenDataException {
+            MXBeanLookup lookup = lookupNotNull(OpenDataException.class);
+            ObjectName name = lookup.mxbeanToObjectName(javaValue);
+            if (name == null)
+                throw new OpenDataException("No name for object: " + javaValue);
+            return name;
+        }
+
+        @Override
+        final Object fromNonNullOpenValue(Object openValue)
+                throws InvalidObjectException {
+            MXBeanLookup lookup = lookupNotNull(InvalidObjectException.class);
+            ObjectName name = (ObjectName) openValue;
+            Object mxbean =
+                lookup.objectNameToMXBean(name, (Class<?>) getJavaType());
+            if (mxbean == null) {
+                final String msg =
+                    "No MXBean for name: " + name;
+                throw new InvalidObjectException(msg);
+            }
+            return mxbean;
+        }
+
+        private <T extends Exception> MXBeanLookup
+            lookupNotNull(Class<T> excClass)
+                throws T {
+            MXBeanLookup lookup = MXBeanLookup.getLookup();
+            if (lookup == null) {
+                final String msg =
+                    "Cannot convert MXBean interface in this context";
+                T exc;
+                try {
+                    Constructor<T> con = excClass.getConstructor(String.class);
+                    exc = con.newInstance(msg);
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+                throw exc;
+            }
+            return lookup;
+        }
+    }
+
+    private static final class TabularMapping extends NonNullMXBeanMapping {
+        TabularMapping(Type targetType,
+                       boolean sortedMap,
+                       TabularType tabularType,
+                       MXBeanMapping keyConverter,
+                       MXBeanMapping valueConverter) {
+            super(targetType, tabularType);
+            this.sortedMap = sortedMap;
+            this.keyMapping = keyConverter;
+            this.valueMapping = valueConverter;
+        }
+
+        @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 (comparator != null) {
+                    final String msg =
+                        "Cannot convert SortedMap with non-null comparator: " +
+                        comparator;
+                    throw new OpenDataException(msg);
+                }
+            }
+            final TabularType tabularType = (TabularType) getOpenType();
+            final TabularData table = new TabularDataSupport(tabularType);
+            final CompositeType rowType = tabularType.getRowType();
+            for (Map.Entry entry : valueMap.entrySet()) {
+                final Object openKey = keyMapping.toOpenValue(entry.getKey());
+                final Object openValue = valueMapping.toOpenValue(entry.getValue());
+                final CompositeData row;
+                row =
+                    new CompositeDataSupport(rowType, keyValueArray,
+                                             new Object[] {openKey,
+                                                           openValue});
+                table.put(row);
+            }
+            return table;
+        }
+
+        @Override
+        final Object fromNonNullOpenValue(Object openValue)
+                throws InvalidObjectException {
+            final TabularData table = (TabularData) openValue;
+            final Collection<CompositeData> rows = cast(table.values());
+            final Map<Object, Object> valueMap =
+                sortedMap ? newSortedMap() : newMap();
+            for (CompositeData row : rows) {
+                final Object key =
+                    keyMapping.fromOpenValue(row.get("key"));
+                final Object value =
+                    valueMapping.fromOpenValue(row.get("value"));
+                if (valueMap.put(key, value) != null) {
+                    final String msg =
+                        "Duplicate entry in TabularData: key=" + key;
+                    throw new InvalidObjectException(msg);
+                }
+            }
+            return valueMap;
+        }
+
+        @Override
+        public void checkReconstructible() throws InvalidObjectException {
+            keyMapping.checkReconstructible();
+            valueMapping.checkReconstructible();
+        }
+
+        private final boolean sortedMap;
+        private final MXBeanMapping keyMapping;
+        private final MXBeanMapping valueMapping;
+    }
+
+    private final class CompositeMapping extends NonNullMXBeanMapping {
+        CompositeMapping(Class targetClass,
+                         CompositeType compositeType,
+                         String[] itemNames,
+                         Method[] getters,
+                         MXBeanMappingFactory factory) throws OpenDataException {
+            super(targetClass, compositeType);
+
+            assert(itemNames.length == getters.length);
+
+            this.itemNames = itemNames;
+            this.getters = getters;
+            this.getterMappings = new MXBeanMapping[getters.length];
+            for (int i = 0; i < getters.length; i++) {
+                Type retType = getters[i].getGenericReturnType();
+                getterMappings[i] = factory.mappingForType(retType, factory);
+            }
+        }
+
+        @Override
+        final Object toNonNullOpenValue(Object value)
+                throws OpenDataException {
+            CompositeType ct = (CompositeType) getOpenType();
+            if (value instanceof CompositeDataView)
+                return ((CompositeDataView) value).toCompositeData(ct);
+            if (value == null)
+                return null;
+
+            Object[] values = new Object[getters.length];
+            for (int i = 0; i < getters.length; i++) {
+                try {
+                    Object got = getters[i].invoke(value, (Object[]) null);
+                    values[i] = getterMappings[i].toOpenValue(got);
+                } catch (Exception e) {
+                    throw openDataException("Error calling getter for " +
+                                            itemNames[i] + ": " + e, e);
+                }
+            }
+            return new CompositeDataSupport(ct, itemNames, values);
+        }
+
+        /** Determine how to convert back from the CompositeData into
+            the original Java type.  For a type that is not reconstructible,
+            this method will fail every time, and will throw the right
+            exception. */
+        private synchronized void makeCompositeBuilder()
+                throws InvalidObjectException {
+            if (compositeBuilder != null)
+                return;
+
+            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.  */
+            CompositeBuilder[][] builders = {
+                {
+                    new CompositeBuilderViaFrom(targetClass, itemNames),
+                },
+                {
+                    new CompositeBuilderViaConstructor(targetClass, itemNames),
+                },
+                {
+                    new CompositeBuilderCheckGetters(targetClass, itemNames,
+                                                     getterMappings),
+                    new CompositeBuilderViaSetters(targetClass, itemNames),
+                    new CompositeBuilderViaProxy(targetClass, itemNames),
+                },
+            };
+            CompositeBuilder foundBuilder = null;
+            /* We try to make a meaningful exception message by
+               concatenating each Builder's explanation of why it
+               isn't applicable.  */
+            final StringBuilder whyNots = new StringBuilder();
+        find:
+            for (CompositeBuilder[] relatedBuilders : builders) {
+                for (int i = 0; i < relatedBuilders.length; i++) {
+                    CompositeBuilder builder = relatedBuilders[i];
+                    String whyNot = builder.applicable(getters);
+                    if (whyNot == null) {
+                        foundBuilder = builder;
+                        break find;
+                    }
+                    if (whyNot.length() > 0) {
+                        if (whyNots.length() > 0)
+                            whyNots.append("; ");
+                        whyNots.append(whyNot);
+                        if (i == 0)
+                           break; // skip other builders in this group
+                    }
+                }
+            }
+            if (foundBuilder == null) {
+                final String msg =
+                    "Do not know how to make a " + targetClass.getName() +
+                    " from a CompositeData: " + whyNots;
+                throw new InvalidObjectException(msg);
+            }
+            compositeBuilder = foundBuilder;
+        }
+
+        @Override
+        public void checkReconstructible() throws InvalidObjectException {
+            makeCompositeBuilder();
+        }
+
+        @Override
+        final Object fromNonNullOpenValue(Object value)
+                throws InvalidObjectException {
+            makeCompositeBuilder();
+            return compositeBuilder.fromCompositeData((CompositeData) value,
+                                                      itemNames,
+                                                      getterMappings);
+        }
+
+        private final String[] itemNames;
+        private final Method[] getters;
+        private final MXBeanMapping[] getterMappings;
+        private CompositeBuilder compositeBuilder;
+    }
+
+    /** Converts from a CompositeData to an instance of the targetClass.  */
+    private static abstract class CompositeBuilder {
+        CompositeBuilder(Class targetClass, String[] itemNames) {
+            this.targetClass = targetClass;
+            this.itemNames = itemNames;
+        }
+
+        Class<?> getTargetClass() {
+            return targetClass;
+        }
+
+        String[] getItemNames() {
+            return itemNames;
+        }
+
+        /** If the subclass is appropriate for targetClass, then the
+            method returns null.  If the subclass is not appropriate,
+            then the method returns an explanation of why not.  If the
+            subclass should be appropriate but there is a problem,
+            then the method throws InvalidObjectException.  */
+        abstract String applicable(Method[] getters)
+                throws InvalidObjectException;
+
+        abstract Object fromCompositeData(CompositeData cd,
+                                          String[] itemNames,
+                                          MXBeanMapping[] converters)
+                throws InvalidObjectException;
+
+        private final Class<?> targetClass;
+        private final String[] itemNames;
+    }
+
+    /** Builder for when the target class has a method "public static
+        from(CompositeData)".  */
+    private static final class CompositeBuilderViaFrom
+            extends CompositeBuilder {
+
+        CompositeBuilderViaFrom(Class targetClass, String[] itemNames) {
+            super(targetClass, itemNames);
+        }
+
+        String applicable(Method[] getters) throws InvalidObjectException {
+            // See if it has a method "T from(CompositeData)"
+            // as is conventional for a CompositeDataView
+            Class<?> targetClass = getTargetClass();
+            try {
+                Method fromMethod =
+                    targetClass.getMethod("from",
+                                          new Class[] {CompositeData.class});
+
+                if (!Modifier.isStatic(fromMethod.getModifiers())) {
+                    final String msg =
+                        "Method from(CompositeData) is not static";
+                    throw new InvalidObjectException(msg);
+                }
+
+                if (fromMethod.getReturnType() != getTargetClass()) {
+                    final String msg =
+                        "Method from(CompositeData) returns " +
+                        fromMethod.getReturnType().getName() +
+                        " not " + targetClass.getName();
+                    throw new InvalidObjectException(msg);
+                }
+
+                this.fromMethod = fromMethod;
+                return null; // success!
+            } catch (InvalidObjectException e) {
+                throw e;
+            } catch (Exception e) {
+                // OK: it doesn't have the method
+                return "no method from(CompositeData)";
+            }
+        }
+
+        final Object fromCompositeData(CompositeData cd,
+                                       String[] itemNames,
+                                       MXBeanMapping[] converters)
+                throws InvalidObjectException {
+            try {
+                return fromMethod.invoke(null, cd);
+            } catch (Exception e) {
+                final String msg = "Failed to invoke from(CompositeData)";
+                throw invalidObjectException(msg, e);
+            }
+        }
+
+        private Method fromMethod;
+    }
+
+    /** This builder never actually returns success.  It simply serves
+        to check whether the other builders in the same group have any
+        chance of success.  If any getter in the targetClass returns
+        a type that we don't know how to reconstruct, then we will
+        not be able to make a builder, and there is no point in repeating
+        the error about the problematic getter as many times as there are
+        candidate builders.  Instead, the "applicable" method will return
+        an explanatory string, and the other builders will be skipped.
+        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,
+                                     MXBeanMapping[] getterConverters) {
+            super(targetClass, itemNames);
+            this.getterConverters = getterConverters;
+        }
+
+        String applicable(Method[] getters) {
+            for (int i = 0; i < getters.length; i++) {
+                try {
+                    getterConverters[i].checkReconstructible();
+                } catch (InvalidObjectException e) {
+                    return "method " + getters[i].getName() + " returns type " +
+                        "that cannot be mapped back from OpenData";
+                }
+            }
+            return "";
+        }
+
+        final Object fromCompositeData(CompositeData cd,
+                                       String[] itemNames,
+                                       MXBeanMapping[] converters) {
+            throw new Error();
+        }
+
+        private final MXBeanMapping[] getterConverters;
+    }
+
+    /** Builder for when the target class has a setter for every getter. */
+    private static class CompositeBuilderViaSetters extends CompositeBuilder {
+
+        CompositeBuilderViaSetters(Class<?> targetClass, String[] itemNames) {
+            super(targetClass, itemNames);
+        }
+
+        String applicable(Method[] getters) {
+            try {
+                Constructor<?> c = getTargetClass().getConstructor();
+            } catch (Exception e) {
+                return "does not have a public no-arg constructor";
+            }
+
+            Method[] setters = new Method[getters.length];
+            for (int i = 0; i < getters.length; i++) {
+                Method getter = getters[i];
+                Class returnType = getter.getReturnType();
+                String name = propertyName(getter);
+                String setterName = "set" + name;
+                Method setter;
+                try {
+                    setter = getTargetClass().getMethod(setterName, returnType);
+                    if (setter.getReturnType() != void.class)
+                        throw new Exception();
+                } catch (Exception e) {
+                    return "not all getters have corresponding setters " +
+                           "(" + getter + ")";
+                }
+                setters[i] = setter;
+            }
+            this.setters = setters;
+            return null;
+        }
+
+        Object fromCompositeData(CompositeData cd,
+                                 String[] itemNames,
+                                 MXBeanMapping[] converters)
+                throws InvalidObjectException {
+            Object o;
+            try {
+                o = getTargetClass().newInstance();
+                for (int i = 0; i < itemNames.length; i++) {
+                    if (cd.containsKey(itemNames[i])) {
+                        Object openItem = cd.get(itemNames[i]);
+                        Object javaItem =
+                            converters[i].fromOpenValue(openItem);
+                        setters[i].invoke(o, javaItem);
+                    }
+                }
+            } catch (Exception e) {
+                throw invalidObjectException(e);
+            }
+            return o;
+        }
+
+        private Method[] setters;
+    }
+
+    /** Builder for when the target class has a constructor that is
+        annotated with @ConstructorProperties so we can see the correspondence
+        to getters.  */
+    private static final class CompositeBuilderViaConstructor
+            extends CompositeBuilder {
+
+        CompositeBuilderViaConstructor(Class targetClass, String[] itemNames) {
+            super(targetClass, itemNames);
+        }
+
+        String applicable(Method[] getters) throws InvalidObjectException {
+
+            final Class<ConstructorProperties> propertyNamesClass = ConstructorProperties.class;
+
+            Class targetClass = getTargetClass();
+            Constructor[] constrs = targetClass.getConstructors();
+
+            // Applicable if and only if there are any annotated constructors
+            List<Constructor> annotatedConstrList = newList();
+            for (Constructor<?> constr : constrs) {
+                if (Modifier.isPublic(constr.getModifiers())
+                        && constr.getAnnotation(propertyNamesClass) != null)
+                    annotatedConstrList.add(constr);
+            }
+
+            if (annotatedConstrList.isEmpty())
+                return "no constructor has @ConstructorProperties annotation";
+
+            annotatedConstructors = newList();
+
+            // Now check that all the annotated constructors are valid
+            // and throw an exception if not.
+
+            // First link the itemNames to their getter indexes.
+            Map<String, Integer> getterMap = newMap();
+            String[] itemNames = getItemNames();
+            for (int i = 0; i < itemNames.length; i++)
+                getterMap.put(itemNames[i], i);
+
+            // Run through the constructors making the checks in the spec.
+            // For each constructor, remember the correspondence between its
+            // parameters and the items.  The int[] for a constructor says
+            // what parameter index should get what item.  For example,
+            // if element 0 is 2 then that means that item 0 in the
+            // CompositeData goes to parameter 2 of the constructor.  If an
+            // element is -1, that item isn't given to the constructor.
+            // Also remember the set of properties in that constructor
+            // so we can test unambiguity.
+            Set<BitSet> getterIndexSets = newSet();
+            for (Constructor constr : annotatedConstrList) {
+                String[] propertyNames =
+                    constr.getAnnotation(propertyNamesClass).value();
+
+                Type[] paramTypes = constr.getGenericParameterTypes();
+                if (paramTypes.length != propertyNames.length) {
+                    final String msg =
+                        "Number of constructor params does not match " +
+                        "@ConstructorProperties annotation: " + constr;
+                    throw new InvalidObjectException(msg);
+                }
+
+                int[] paramIndexes = new int[getters.length];
+                for (int i = 0; i < getters.length; i++)
+                    paramIndexes[i] = -1;
+                BitSet present = new BitSet();
+
+                for (int i = 0; i < propertyNames.length; i++) {
+                    String propertyName = propertyNames[i];
+                    if (!getterMap.containsKey(propertyName)) {
+                        final String msg =
+                            "@ConstructorProperties includes name " + propertyName +
+                            " which does not correspond to a property: " +
+                            constr;
+                        throw new InvalidObjectException(msg);
+                    }
+                    int getterIndex = getterMap.get(propertyName);
+                    paramIndexes[getterIndex] = i;
+                    if (present.get(getterIndex)) {
+                        final String msg =
+                            "@ConstructorProperties contains property " +
+                            propertyName + " more than once: " + constr;
+                        throw new InvalidObjectException(msg);
+                    }
+                    present.set(getterIndex);
+                    Method getter = getters[getterIndex];
+                    Type propertyType = getter.getGenericReturnType();
+                    if (!propertyType.equals(paramTypes[i])) {
+                        final String msg =
+                            "@ConstructorProperties gives property " + propertyName +
+                            " of type " + propertyType + " for parameter " +
+                            " of type " + paramTypes[i] + ": " + constr;
+                        throw new InvalidObjectException(msg);
+                    }
+                }
+
+                if (!getterIndexSets.add(present)) {
+                    final String msg =
+                        "More than one constructor has a @ConstructorProperties " +
+                        "annotation with this set of names: " +
+                        Arrays.toString(propertyNames);
+                    throw new InvalidObjectException(msg);
+                }
+
+                Constr c = new Constr(constr, paramIndexes, present);
+                annotatedConstructors.add(c);
+            }
+
+            /* Check that no possible set of items could lead to an ambiguous
+             * choice of constructor (spec requires this check).  For any
+             * pair of constructors, their union would be the minimal
+             * ambiguous set.  If this set itself corresponds to a constructor,
+             * there is no ambiguity for that pair.  In the usual case, one
+             * of the constructors is a superset of the other so the union is
+             * just the bigger constuctor.
+             *
+             * The algorithm here is quadratic in the number of constructors
+             * with a @ConstructorProperties annotation.  Typically this corresponds
+             * to the number of versions of the class there have been.  Ten
+             * would already be a large number, so although it's probably
+             * possible to have an O(n lg n) algorithm it wouldn't be
+             * worth the complexity.
+             */
+            for (BitSet a : getterIndexSets) {
+                boolean seen = false;
+                for (BitSet b : getterIndexSets) {
+                    if (a == b)
+                        seen = true;
+                    else if (seen) {
+                        BitSet u = new BitSet();
+                        u.or(a); u.or(b);
+                        if (!getterIndexSets.contains(u)) {
+                            Set<String> names = new TreeSet<String>();
+                            for (int i = u.nextSetBit(0); i >= 0;
+                                 i = u.nextSetBit(i+1))
+                                names.add(itemNames[i]);
+                            final String msg =
+                                "Constructors with @ConstructorProperties annotation " +
+                                " would be ambiguous for these items: " +
+                                names;
+                            throw new InvalidObjectException(msg);
+                        }
+                    }
+                }
+            }
+
+            return null; // success!
+        }
+
+        final Object fromCompositeData(CompositeData cd,
+                                       String[] itemNames,
+                                       MXBeanMapping[] mappings)
+                throws InvalidObjectException {
+            // The CompositeData might come from an earlier version where
+            // not all the items were present.  We look for a constructor
+            // that accepts just the items that are present.  Because of
+            // the ambiguity check in applicable(), we know there must be
+            // at most one maximally applicable constructor.
+            CompositeType ct = cd.getCompositeType();
+            BitSet present = new BitSet();
+            for (int i = 0; i < itemNames.length; i++) {
+                if (ct.getType(itemNames[i]) != null)
+                    present.set(i);
+            }
+
+            Constr max = null;
+            for (Constr constr : annotatedConstructors) {
+                if (subset(constr.presentParams, present) &&
+                        (max == null ||
+                         subset(max.presentParams, constr.presentParams)))
+                    max = constr;
+            }
+
+            if (max == null) {
+                final String msg =
+                    "No constructor has a @ConstructorProperties for this set of " +
+                    "items: " + ct.keySet();
+                throw new InvalidObjectException(msg);
+            }
+
+            Object[] params = new Object[max.presentParams.cardinality()];
+            for (int i = 0; i < itemNames.length; i++) {
+                if (!max.presentParams.get(i))
+                    continue;
+                Object openItem = cd.get(itemNames[i]);
+                Object javaItem = mappings[i].fromOpenValue(openItem);
+                int index = max.paramIndexes[i];
+                if (index >= 0)
+                    params[index] = javaItem;
+            }
+
+            try {
+                return max.constructor.newInstance(params);
+            } catch (Exception e) {
+                final String msg =
+                    "Exception constructing " + getTargetClass().getName();
+                throw invalidObjectException(msg, e);
+            }
+        }
+
+        private static boolean subset(BitSet sub, BitSet sup) {
+            BitSet subcopy = (BitSet) sub.clone();
+            subcopy.andNot(sup);
+            return subcopy.isEmpty();
+        }
+
+        private static class Constr {
+            final Constructor constructor;
+            final int[] paramIndexes;
+            final BitSet presentParams;
+            Constr(Constructor constructor, int[] paramIndexes,
+                   BitSet presentParams) {
+                this.constructor = constructor;
+                this.paramIndexes = paramIndexes;
+                this.presentParams = presentParams;
+            }
+        }
+
+        private List<Constr> annotatedConstructors;
+    }
+
+    /** Builder for when the target class is an interface and contains
+        no methods other than getters.  Then we can make an instance
+        using a dynamic proxy that forwards the getters to the source
+        CompositeData.  */
+    private static final class CompositeBuilderViaProxy
+            extends CompositeBuilder {
+
+        CompositeBuilderViaProxy(Class targetClass, String[] itemNames) {
+            super(targetClass, itemNames);
+        }
+
+        String applicable(Method[] getters) {
+            Class targetClass = getTargetClass();
+            if (!targetClass.isInterface())
+                return "not an interface";
+            Set<Method> methods =
+                newSet(Arrays.asList(targetClass.getMethods()));
+            methods.removeAll(Arrays.asList(getters));
+            /* If the interface has any methods left over, they better be
+             * public methods that are already present in java.lang.Object.
+             */
+            String bad = null;
+            for (Method m : methods) {
+                String mname = m.getName();
+                Class[] mparams = m.getParameterTypes();
+                try {
+                    Method om = Object.class.getMethod(mname, mparams);
+                    if (!Modifier.isPublic(om.getModifiers()))
+                        bad = mname;
+                } catch (NoSuchMethodException e) {
+                    bad = mname;
+                }
+                /* We don't catch SecurityException since it shouldn't
+                 * happen for a method in Object and if it does we would
+                 * like to know about it rather than mysteriously complaining.
+                 */
+            }
+            if (bad != null)
+                return "contains methods other than getters (" + bad + ")";
+            return null; // success!
+        }
+
+        final Object fromCompositeData(CompositeData cd,
+                                       String[] itemNames,
+                                       MXBeanMapping[] converters) {
+            final Class targetClass = getTargetClass();
+            return
+                Proxy.newProxyInstance(targetClass.getClassLoader(),
+                                       new Class[] {targetClass},
+                                       new CompositeDataInvocationHandler(cd));
+        }
+    }
+
+    static InvalidObjectException invalidObjectException(String msg,
+                                                         Throwable cause) {
+        return EnvHelp.initCause(new InvalidObjectException(msg), cause);
+    }
+
+    static InvalidObjectException invalidObjectException(Throwable cause) {
+        return invalidObjectException(cause.getMessage(), cause);
+    }
+
+    static OpenDataException openDataException(String msg, Throwable cause) {
+        return EnvHelp.initCause(new OpenDataException(msg), cause);
+    }
+
+    static OpenDataException openDataException(Throwable cause) {
+        return openDataException(cause.getMessage(), cause);
+    }
+
+    static void mustBeComparable(Class collection, Type element)
+            throws OpenDataException {
+        if (!(element instanceof Class)
+            || !Comparable.class.isAssignableFrom((Class<?>) element)) {
+            final String msg =
+                "Parameter class " + element + " of " +
+                collection.getName() + " does not implement " +
+                Comparable.class.getName();
+            throw new OpenDataException(msg);
+        }
+    }
+
+    /**
+     * Utility method to take a string and convert it to normal Java variable
+     * name capitalization.  This normally means converting the first
+     * character from upper case to lower case, but in the (unusual) special
+     * case when there is more than one character and both the first and
+     * second characters are upper case, we leave it alone.
+     * <p>
+     * Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays
+     * as "URL".
+     *
+     * @param  name The string to be decapitalized.
+     * @return  The decapitalized version of the string.
+     */
+    public static String decapitalize(String name) {
+        if (name == null || name.length() == 0) {
+            return name;
+        }
+        int offset1 = Character.offsetByCodePoints(name, 0, 1);
+        // Should be name.offsetByCodePoints but 6242664 makes this fail
+        if (offset1 < name.length() &&
+                Character.isUpperCase(name.codePointAt(offset1)))
+            return name;
+        return name.substring(0, offset1).toLowerCase() +
+               name.substring(offset1);
+    }
+
+    /**
+     * Reverse operation for java.beans.Introspector.decapitalize.  For any s,
+     * capitalize(decapitalize(s)).equals(s).  The reverse is not true:
+     * e.g. capitalize("uRL") produces "URL" which is unchanged by
+     * decapitalize.
+     */
+    static String capitalize(String name) {
+        if (name == null || name.length() == 0)
+            return name;
+        int offset1 = name.offsetByCodePoints(0, 1);
+        return name.substring(0, offset1).toUpperCase() +
+               name.substring(offset1);
+    }
+
+    public static String propertyName(Method m) {
+        String rest = null;
+        String name = m.getName();
+        if (name.startsWith("get"))
+            rest = name.substring(3);
+        else if (name.startsWith("is") && m.getReturnType() == boolean.class)
+            rest = name.substring(2);
+        if (rest == null || rest.length() == 0
+            || m.getParameterTypes().length > 0
+            || m.getReturnType() == void.class
+            || name.equals("getClass"))
+            return null;
+        return rest;
+    }
+
+    private final static Map<Type, Type> inProgress = newIdentityHashMap();
+    // really an IdentityHashSet but that doesn't exist
+}
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -42,7 +42,6 @@
 import javax.management.MBeanInfo;
 import javax.management.NotCompliantMBeanException;
 
-import com.sun.jmx.mbeanserver.Util;
 import com.sun.jmx.remote.util.EnvHelp;
 import java.beans.BeanInfo;
 import java.beans.PropertyDescriptor;
@@ -50,6 +49,7 @@
 import java.lang.reflect.InvocationTargetException;
 import javax.management.AttributeNotFoundException;
 import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
  * This class contains the methods for performing all the tests needed to verify
@@ -165,30 +165,34 @@
         throw new NotCompliantMBeanException(msg);
     }
 
-    public static DynamicMBean makeDynamicMBean(Object mbean)
-        throws NotCompliantMBeanException {
+    public static <T> DynamicMBean makeDynamicMBean(T mbean)
+    throws NotCompliantMBeanException {
+        if (mbean == null)
+            throw new NotCompliantMBeanException("Null MBean object");
         if (mbean instanceof DynamicMBean)
             return (DynamicMBean) mbean;
         final Class mbeanClass = mbean.getClass();
-        Class<?> c = null;
+        Class<? super T> c = null;
         try {
-            c = getStandardMBeanInterface(mbeanClass);
+            c = Util.cast(getStandardMBeanInterface(mbeanClass));
         } catch (NotCompliantMBeanException e) {
             // Ignore exception - we need to check whether
             // mbean is an MXBean first.
         }
         if (c != null)
-            return new StandardMBeanSupport(mbean, Util.<Class<Object>>cast(c));
+            return new StandardMBeanSupport(mbean, c);
 
         try {
-            c = getMXBeanInterface(mbeanClass);
+            c = Util.cast(getMXBeanInterface(mbeanClass));
         } catch (NotCompliantMBeanException e) {
             // Ignore exception - we cannot decide whether mbean was supposed
             // to be an MBean or an MXBean. We will call checkCompliance()
             // to generate the appropriate exception.
         }
-        if (c != null)
-            return new MXBeanSupport(mbean, Util.<Class<Object>>cast(c));
+        if (c != null) {
+            MXBeanMappingFactory factory = MXBeanMappingFactory.forInterface(c);
+            return new MXBeanSupport(mbean, c, factory);
+        }
         checkCompliance(mbeanClass);
         throw new NotCompliantMBeanException("Not compliant"); // not reached
     }
@@ -217,9 +221,10 @@
         return testCompliance(baseClass, null);
     }
 
-    public static void testComplianceMXBeanInterface(Class interfaceClass)
+    public static void testComplianceMXBeanInterface(Class interfaceClass,
+                                                     MXBeanMappingFactory factory)
             throws NotCompliantMBeanException {
-        MXBeanIntrospector.getInstance().getAnalyzer(interfaceClass);
+        MXBeanIntrospector.getInstance(factory).getAnalyzer(interfaceClass);
     }
 
     /**
@@ -325,6 +330,15 @@
         }
     }
 
+    public static <T> Class<? super T> getStandardOrMXBeanInterface(
+            Class<T> baseClass, boolean mxbean)
+    throws NotCompliantMBeanException {
+        if (mxbean)
+            return getMXBeanInterface(baseClass);
+        else
+            return getStandardMBeanInterface(baseClass);
+    }
+
     /*
      * ------------------------------------------
      *  PRIVATE METHODS
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanAnalyzer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanAnalyzer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -29,13 +29,10 @@
 
 import java.lang.reflect.Method;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.Comparator;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import javax.management.NotCompliantMBeanException;
 
 /**
@@ -54,15 +51,15 @@
  */
 class MBeanAnalyzer<M> {
 
-    static interface MBeanVisitor<M> {
+    static interface MBeanVisitor<M, X extends Exception> {
         public void visitAttribute(String attributeName,
                 M getter,
-                M setter);
+                M setter) throws X;
         public void visitOperation(String operationName,
-                M operation);
+                M operation) throws X;
     }
 
-    void visit(MBeanVisitor<M> visitor) {
+    <X extends Exception> void visit(MBeanVisitor<M, X> visitor) throws X {
         // visit attributes
         for (Map.Entry<String, AttrMethods<M>> entry : attrMap.entrySet()) {
             String name = entry.getKey();
@@ -98,21 +95,21 @@
     // cached PerInterface object for an MBean interface means that
     // an analyzer will not be recreated for a second MBean using the
     // same interface.
-    static <M> MBeanAnalyzer<M> analyzer(Class<?> mbeanInterface,
+    static <M> MBeanAnalyzer<M> analyzer(Class<?> mbeanType,
             MBeanIntrospector<M> introspector)
             throws NotCompliantMBeanException {
-        return new MBeanAnalyzer<M>(mbeanInterface, introspector);
+        return new MBeanAnalyzer<M>(mbeanType, introspector);
     }
 
-    private MBeanAnalyzer(Class<?> mbeanInterface,
+    private MBeanAnalyzer(Class<?> mbeanType,
             MBeanIntrospector<M> introspector)
             throws NotCompliantMBeanException {
-        introspector.checkCompliance(mbeanInterface);
+        introspector.checkCompliance(mbeanType);
 
         try {
-            initMaps(mbeanInterface, introspector);
+            initMaps(mbeanType, introspector);
         } catch (Exception x) {
-            throw Introspector.throwException(mbeanInterface,x);
+            throw Introspector.throwException(mbeanType,x);
         }
     }
 
@@ -126,7 +123,8 @@
         /* Run through the methods to detect inconsistencies and to enable
            us to give getter and setter together to visitAttribute. */
         for (Method m : methods) {
-            String name = m.getName();
+            final String name = m.getName();
+            final int nParams = m.getParameterTypes().length;
 
             final M cm = introspector.mFrom(m);
 
@@ -137,7 +135,7 @@
             && m.getReturnType() == boolean.class)
                 attrName = name.substring(2);
 
-            if (attrName.length() != 0 && m.getParameterTypes().length == 0
+            if (attrName.length() != 0 && nParams == 0
                     && m.getReturnType() != void.class) {
                 // It's a getter
                 // Check we don't have both isX and getX
@@ -154,7 +152,7 @@
                 am.getter = cm;
                 attrMap.put(attrName, am);
             } else if (name.startsWith("set") && name.length() > 3
-                    && m.getParameterTypes().length == 1 &&
+                    && nParams == 1 &&
                     m.getReturnType() == void.class) {
                 // It's a setter
                 attrName = name.substring(3);
@@ -228,7 +226,11 @@
        but only the overriding one is of interest.  We return the methods
        in the same order they arrived in.  This isn't required by the spec
        but existing code may depend on it and users may be used to seeing
-       operations or attributes appear in a particular order.  */
+       operations or attributes appear in a particular order.
+
+       Because of the way this method works, if the same Method appears
+       more than once in the given List then it will be completely deleted!
+       So don't do that.  */
     static List<Method>
             eliminateCovariantMethods(List<Method> startMethods) {
         // We are assuming that you never have very many methods with the
@@ -243,7 +245,7 @@
             final Method m0 = sorted[i-1];
             final Method m1 = sorted[i];
 
-            // Methods that don't have the same name can't override each others
+            // Methods that don't have the same name can't override each other
             if (!m0.getName().equals(m1.getName())) continue;
 
             // Methods that have the same name and same signature override
@@ -251,7 +253,8 @@
             // due to the way we have sorted them in MethodOrder.
             if (Arrays.equals(m0.getParameterTypes(),
                     m1.getParameterTypes())) {
-                overridden.add(m0);
+                if (!overridden.add(m0))
+                    throw new RuntimeException("Internal error: duplicate Method");
             }
         }
 
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanIntrospector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -40,6 +40,7 @@
 
 import javax.management.Descriptor;
 import javax.management.ImmutableDescriptor;
+import javax.management.IntrospectionException;
 import javax.management.InvalidAttributeValueException;
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanConstructorInfo;
@@ -53,8 +54,9 @@
 
 /**
  * An introspector for MBeans of a certain type.  There is one instance
- * of this class for Standard MBeans and one for MXBeans, characterized
- * by the two concrete subclasses of this abstract class.
+ * of this class for Standard MBeans, and one for every MXBeanMappingFactory;
+ * these two cases correspond to the two concrete subclasses of this abstract
+ * class.
  *
  * @param <M> the representation of methods for this kind of MBean:
  * Method for Standard MBeans, ConvertingMethod for MXBeans.
@@ -119,7 +121,7 @@
      * MXBean interface is not valid if one of its parameters cannot be
      * mapped to an Open Type.
      */
-    abstract void checkMethod(M m) throws IllegalArgumentException;
+    abstract void checkMethod(M m);
 
     /**
      * Invoke the method with the given target and arguments.
@@ -149,7 +151,8 @@
      * may be null.
      */
     abstract MBeanAttributeInfo getMBeanAttributeInfo(String attributeName,
-            M getter, M setter);
+            M getter, M setter) throws IntrospectionException;
+
     /**
      * Construct an MBeanOperationInfo for the given operation based on
      * the M it was derived from.
@@ -170,6 +173,16 @@
      */
     abstract Descriptor getMBeanDescriptor(Class<?> resourceClass);
 
+    /**
+     * Get any additional Descriptor entries for this introspector instance.
+     * If there is a non-default MXBeanMappingFactory, it will appear in
+     * this Descriptor.
+     * @return Additional Descriptor entries, or an empty Descriptor if none.
+     */
+    Descriptor getSpecificMBeanDescriptor() {
+        return ImmutableDescriptor.EMPTY_DESCRIPTOR;
+    }
+
     void checkCompliance(Class<?> mbeanType) throws NotCompliantMBeanException {
         if (!mbeanType.isInterface()) {
             throw new NotCompliantMBeanException("Not an interface: " +
@@ -216,7 +229,7 @@
      * the MBeanInfo's Descriptor.
      */
     private MBeanInfo makeInterfaceMBeanInfo(Class<?> mbeanInterface,
-            MBeanAnalyzer<M> analyzer) {
+            MBeanAnalyzer<M> analyzer) throws IntrospectionException {
         final MBeanInfoMaker maker = new MBeanInfoMaker();
         analyzer.visit(maker);
         final String description =
@@ -317,11 +330,12 @@
     }
 
     /** A visitor that constructs the per-interface MBeanInfo. */
-    private class MBeanInfoMaker implements MBeanAnalyzer.MBeanVisitor<M> {
+    private class MBeanInfoMaker
+            implements MBeanAnalyzer.MBeanVisitor<M, IntrospectionException> {
 
         public void visitAttribute(String attributeName,
                 M getter,
-                M setter) {
+                M setter) throws IntrospectionException {
             MBeanAttributeInfo mbai =
                     getMBeanAttributeInfo(attributeName, getter, setter);
 
@@ -346,13 +360,14 @@
                     ops.toArray(new MBeanOperationInfo[0]);
             final String interfaceClassName =
                     "interfaceClassName=" + mbeanInterface.getName();
-            final Descriptor interfDescriptor =
+            final Descriptor classNameDescriptor =
                     new ImmutableDescriptor(interfaceClassName);
             final Descriptor mbeanDescriptor = getBasicMBeanDescriptor();
             final Descriptor annotatedDescriptor =
                     Introspector.descriptorForElement(mbeanInterface);
             final Descriptor descriptor =
-                    DescriptorCache.getInstance().union(interfDescriptor,
+                DescriptorCache.getInstance().union(
+                    classNameDescriptor,
                     mbeanDescriptor,
                     annotatedDescriptor);
 
@@ -388,20 +403,24 @@
      * Return the MBeanInfo for the given resource, based on the given
      * per-interface data.
      */
-    final MBeanInfo getMBeanInfo(Object resource, PerInterface<M> perInterface) {
+    final MBeanInfo getMBeanInfo(Object resource, PerInterface<M> perInterface)
+    throws NotCompliantMBeanException {
         MBeanInfo mbi =
                 getClassMBeanInfo(resource.getClass(), perInterface);
         MBeanNotificationInfo[] notifs = findNotifications(resource);
-        if (notifs == null || notifs.length == 0)
+        Descriptor d = getSpecificMBeanDescriptor();
+        boolean anyNotifs = (notifs != null && notifs.length > 0);
+        if (!anyNotifs && ImmutableDescriptor.EMPTY_DESCRIPTOR.equals(d))
             return mbi;
         else {
+            d = ImmutableDescriptor.union(d, mbi.getDescriptor());
             return new MBeanInfo(mbi.getClassName(),
                     mbi.getDescription(),
                     mbi.getAttributes(),
                     mbi.getConstructors(),
                     mbi.getOperations(),
                     notifs,
-                    mbi.getDescriptor());
+                    d);
         }
     }
 
@@ -446,7 +465,7 @@
             return null;
         MBeanNotificationInfo[] mbn =
                 ((NotificationBroadcaster) moi).getNotificationInfo();
-        if (mbn == null)
+        if (mbn == null || mbn.length == 0)
             return null;
         MBeanNotificationInfo[] result =
                 new MBeanNotificationInfo[mbn.length];
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -38,6 +38,7 @@
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
 import javax.management.ReflectionException;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
  * Base class for MBeans.  There is one instance of this class for
@@ -121,24 +122,26 @@
 public abstract class MBeanSupport<M>
         implements DynamicMBean2, MBeanRegistration {
 
-    <T> MBeanSupport(T resource, Class<T> mbeanInterface)
+    <T> MBeanSupport(T resource, Class<T> mbeanInterfaceType,
+                     MXBeanMappingFactory mappingFactory)
             throws NotCompliantMBeanException {
-        if (mbeanInterface == null)
+        if (mbeanInterfaceType == null)
             throw new NotCompliantMBeanException("Null MBean interface");
-        if (!mbeanInterface.isInstance(resource)) {
+        if (!mbeanInterfaceType.isInstance(resource)) {
             final String msg =
                 "Resource class " + resource.getClass().getName() +
-                " is not an instance of " + mbeanInterface.getName();
+                " is not an instance of " + mbeanInterfaceType.getName();
             throw new NotCompliantMBeanException(msg);
         }
         this.resource = resource;
-        MBeanIntrospector<M> introspector = getMBeanIntrospector();
-        this.perInterface = introspector.getPerInterface(mbeanInterface);
+        MBeanIntrospector<M> introspector = getMBeanIntrospector(mappingFactory);
+        this.perInterface = introspector.getPerInterface(mbeanInterfaceType);
         this.mbeanInfo = introspector.getMBeanInfo(resource, perInterface);
     }
 
     /** Return the appropriate introspector for this type of MBean. */
-    abstract MBeanIntrospector<M> getMBeanIntrospector();
+    abstract MBeanIntrospector<M>
+            getMBeanIntrospector(MXBeanMappingFactory mappingFactory);
 
     /**
      * Return a cookie for this MBean.  This cookie will be passed to
@@ -162,9 +165,8 @@
     public final ObjectName preRegister(MBeanServer server, ObjectName name)
             throws Exception {
         if (resource instanceof MBeanRegistration)
-            return ((MBeanRegistration) resource).preRegister(server, name);
-        else
-            return name;
+            name = ((MBeanRegistration) resource).preRegister(server, name);
+        return name;
     }
 
     public final void preRegister2(MBeanServer server, ObjectName name)
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanIntrospector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,18 +25,26 @@
 
 package com.sun.jmx.mbeanserver;
 
+import com.sun.jmx.mbeanserver.MBeanIntrospector.MBeanInfoMap;
+import com.sun.jmx.mbeanserver.MBeanIntrospector.PerInterfaceMap;
 import java.lang.annotation.Annotation;
+import java.lang.ref.WeakReference;
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.WeakHashMap;
 import javax.management.Descriptor;
 import javax.management.ImmutableDescriptor;
+import javax.management.IntrospectionException;
+import javax.management.JMX;
 import javax.management.MBeanAttributeInfo;
 import javax.management.MBeanException;
 import javax.management.MBeanOperationInfo;
 import javax.management.MBeanParameterInfo;
 import javax.management.NotCompliantMBeanException;
+import javax.management.openmbean.MXBeanMappingFactory;
 import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
 import javax.management.openmbean.OpenMBeanOperationInfoSupport;
 import javax.management.openmbean.OpenMBeanParameterInfo;
@@ -49,10 +57,36 @@
  * @since 1.6
  */
 class MXBeanIntrospector extends MBeanIntrospector<ConvertingMethod> {
-    private static final MXBeanIntrospector instance = new MXBeanIntrospector();
+    /* We keep one MXBeanIntrospector per MXBeanMappingFactory, since the results
+     * of the introspection depend on the factory.  The MXBeanIntrospector
+     * has a reference back to the factory, so we wrap it in a WeakReference.
+     * It will be strongly referenced by any MXBeanSupport instances using it;
+     * if there are none then it is OK to gc it.
+     */
+    private static final
+            Map<MXBeanMappingFactory, WeakReference<MXBeanIntrospector>> map =
+            new WeakHashMap<MXBeanMappingFactory, WeakReference<MXBeanIntrospector>>();
 
-    static MXBeanIntrospector getInstance() {
-        return instance;
+    static MXBeanIntrospector getInstance(MXBeanMappingFactory factory) {
+        if (factory == null)
+            factory = MXBeanMappingFactory.DEFAULT;
+        synchronized (map) {
+            MXBeanIntrospector intro;
+            WeakReference<MXBeanIntrospector> wr = map.get(factory);
+            if (wr != null) {
+                intro = wr.get();
+                if (intro != null)
+                    return intro;
+            }
+            intro = new MXBeanIntrospector(factory);
+            wr = new WeakReference<MXBeanIntrospector>(intro);
+            map.put(factory, wr);
+            return intro;
+        }
+    }
+
+    private MXBeanIntrospector(MXBeanMappingFactory factory) {
+        this.mappingFactory = factory;
     }
 
     @Override
@@ -78,7 +112,7 @@
 
     @Override
     ConvertingMethod mFrom(Method m) {
-        return ConvertingMethod.from(m);
+        return ConvertingMethod.from(m, mappingFactory);
     }
 
     @Override
@@ -139,7 +173,8 @@
 
     @Override
     MBeanAttributeInfo getMBeanAttributeInfo(String attributeName,
-            ConvertingMethod getter, ConvertingMethod setter) {
+            ConvertingMethod getter, ConvertingMethod setter)
+            throws IntrospectionException {
 
         final boolean isReadable = (getter != null);
         final boolean isWritable = (setter != null);
@@ -222,14 +257,14 @@
                     Introspector.descriptorForAnnotations(annots[i]));
             final MBeanParameterInfo pi;
             if (canUseOpenInfo(originalType)) {
-                pi = new OpenMBeanParameterInfoSupport("p" + i,
+                pi = new OpenMBeanParameterInfoSupport(paramName,
                                                        paramDescription,
                                                        openType,
                                                        descriptor);
             } else {
                 openParameterTypes = false;
                 pi = new MBeanParameterInfo(
-                    "p" + i,
+                    paramName,
                     originalTypeString(originalType),
                     paramDescription,
                     descriptor);
@@ -291,6 +326,17 @@
         return ImmutableDescriptor.EMPTY_DESCRIPTOR;
     }
 
+    @Override
+    Descriptor getSpecificMBeanDescriptor() {
+        if (mappingFactory == MXBeanMappingFactory.DEFAULT)
+            return ImmutableDescriptor.EMPTY_DESCRIPTOR;
+        else {
+            return new ImmutableDescriptor(
+                    JMX.MXBEAN_MAPPING_FACTORY_CLASS_FIELD + "=" +
+                    mappingFactory.getClass().getName());
+        }
+    }
+
     private static Descriptor typeDescriptor(OpenType openType,
                                              Type originalType) {
         return new ImmutableDescriptor(
@@ -331,8 +377,10 @@
             return type.toString();
     }
 
-    private static final PerInterfaceMap<ConvertingMethod>
+    private final PerInterfaceMap<ConvertingMethod>
         perInterfaceMap = new PerInterfaceMap<ConvertingMethod>();
 
-    private static final MBeanInfoMap mbeanInfoMap = new MBeanInfoMap();
+    private final MBeanInfoMap mbeanInfoMap = new MBeanInfoMap();
+
+    private final MXBeanMappingFactory mappingFactory;
 }
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanLookup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,15 +25,21 @@
 
 package com.sun.jmx.mbeanserver;
 
+import com.sun.jmx.remote.util.EnvHelp;
+import java.io.InvalidObjectException;
 import static com.sun.jmx.mbeanserver.Util.*;
 import java.util.Map;
 import java.lang.ref.WeakReference;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
+import java.security.AccessController;
+import javax.management.InstanceAlreadyExistsException;
 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;
 
 /**
  * @since 1.6
@@ -80,71 +86,199 @@
  *
  * From the above, it is clear that the logic for getX on an MXBean is
  * the same as for setX on a proxy, and vice versa.
+ *
+ * The above describes the logic for "plain" MXBeanLookup, represented
+ * by MXBeanLookup.Plain.  When namespaces enter the picture, we see
+ * MXBeanLookup.Prefix.  Here, the idea is that the name of the ModuleMXBean
+ * might be a//m:m=m.  In this case, we don't accept a reference to
+ * an MXBean object, since that would require different namespaces to know
+ * each others' objects.  We only accept proxies.  Suppose you have a proxy
+ * for a//m:m=m, call it moduleProxy, and you call
+ * moduleProxy.setProduct(productProxy).  Then if productProxy is for
+ * a//p:p=p we should convert this to just p:p=p.  If productProxy is for
+ * a//b//p:p=p we should convert it to b//p:p=p.  Conversely, if getProduct
+ * returns an ObjectName like b//p:p=p then we should convert it into a proxy
+ * for a//b//p:p=p.
  */
-public class MXBeanLookup {
+public abstract class MXBeanLookup {
     private MXBeanLookup(MBeanServerConnection mbsc) {
         this.mbsc = mbsc;
     }
 
-    static MXBeanLookup lookupFor(MBeanServerConnection mbsc) {
-        synchronized (mbscToLookup) {
-            WeakReference<MXBeanLookup> weakLookup = mbscToLookup.get(mbsc);
-            MXBeanLookup lookup = (weakLookup == null) ? null : weakLookup.get();
-            if (lookup == null) {
-                lookup = new MXBeanLookup(mbsc);
-                mbscToLookup.put(mbsc, new WeakReference<MXBeanLookup>(lookup));
+    static MXBeanLookup lookupFor(MBeanServerConnection mbsc, String prefix) {
+        if (prefix == null)
+            return Plain.lookupFor(mbsc);
+        else
+            return new Prefix(mbsc, prefix);
+    }
+
+    abstract <T> T objectNameToMXBean(ObjectName name, Class<T> type)
+            throws InvalidObjectException;
+
+    abstract ObjectName mxbeanToObjectName(Object mxbean)
+            throws OpenDataException;
+
+    static class Plain extends MXBeanLookup {
+        Plain(MBeanServerConnection mbsc) {
+            super(mbsc);
+        }
+
+        static Plain lookupFor(MBeanServerConnection mbsc) {
+            synchronized (mbscToLookup) {
+                WeakReference<Plain> weakLookup = mbscToLookup.get(mbsc);
+                Plain lookup = (weakLookup == null) ? null : weakLookup.get();
+                if (lookup == null) {
+                    lookup = new Plain(mbsc);
+                    mbscToLookup.put(mbsc, new WeakReference<Plain>(lookup));
+                }
+                return lookup;
+            }
+        }
+
+        @Override
+        synchronized <T> T objectNameToMXBean(ObjectName name, Class<T> type) {
+            WeakReference<Object> wr = objectNameToProxy.get(name);
+            if (wr != null) {
+                Object proxy = wr.get();
+                if (type.isInstance(proxy))
+                    return type.cast(proxy);
+            }
+            T proxy = JMX.newMXBeanProxy(mbsc, name, type);
+            objectNameToProxy.put(name, new WeakReference<Object>(proxy));
+            return proxy;
+        }
+
+        @Override
+        synchronized ObjectName mxbeanToObjectName(Object mxbean)
+        throws OpenDataException {
+            String wrong;
+            if (mxbean instanceof Proxy) {
+                InvocationHandler ih = Proxy.getInvocationHandler(mxbean);
+                if (ih instanceof MBeanServerInvocationHandler) {
+                    MBeanServerInvocationHandler mbsih =
+                            (MBeanServerInvocationHandler) ih;
+                    if (mbsih.getMBeanServerConnection().equals(mbsc))
+                        return mbsih.getObjectName();
+                    else
+                        wrong = "proxy for a different MBeanServer";
+                } else
+                    wrong = "not a JMX proxy";
+            } else {
+                ObjectName name = mxbeanToObjectName.get(mxbean);
+                if (name != null)
+                    return name;
+                wrong = "not an MXBean registered in this MBeanServer";
             }
-            return lookup;
+            String s = (mxbean == null) ?
+                "null" : "object of type " + mxbean.getClass().getName();
+            throw new OpenDataException(
+                    "Could not convert " + s + " to an ObjectName: " + wrong);
+            // Message will be strange if mxbean is null but it is not
+            // supposed to be.
+        }
+
+        synchronized void addReference(ObjectName name, Object mxbean)
+        throws InstanceAlreadyExistsException {
+            ObjectName existing = mxbeanToObjectName.get(mxbean);
+            if (existing != null) {
+                String multiname = AccessController.doPrivileged(
+                        new GetPropertyAction("jmx.mxbean.multiname"));
+                if (!"true".equalsIgnoreCase(multiname)) {
+                    throw new InstanceAlreadyExistsException(
+                            "MXBean already registered with name " + existing);
+                }
+            }
+            mxbeanToObjectName.put(mxbean, name);
+        }
+
+        synchronized boolean removeReference(ObjectName name, Object mxbean) {
+            if (name.equals(mxbeanToObjectName.get(mxbean))) {
+                mxbeanToObjectName.remove(mxbean);
+                return true;
+            } else
+                return false;
+            /* removeReference can be called when the above condition fails,
+             * notably if you try to register the same MXBean twice.
+             */
+        }
+
+        private final WeakIdentityHashMap<Object, ObjectName>
+            mxbeanToObjectName = WeakIdentityHashMap.make();
+        private final Map<ObjectName, WeakReference<Object>>
+            objectNameToProxy = newMap();
+        private static WeakIdentityHashMap<MBeanServerConnection,
+                                           WeakReference<Plain>>
+            mbscToLookup = WeakIdentityHashMap.make();
+    }
+
+    private static class Prefix extends MXBeanLookup {
+        private final String prefix;
+
+        Prefix(MBeanServerConnection mbsc, String prefix) {
+            super(mbsc);
+            this.prefix = prefix;
+        }
+
+        @Override
+        <T> T objectNameToMXBean(ObjectName name, Class<T> type)
+        throws InvalidObjectException {
+            String domain = prefix + name.getDomain();
+            try {
+                name = switchDomain(domain, name);
+            } catch (MalformedObjectNameException e) {
+                throw EnvHelp.initCause(
+                        new InvalidObjectException(e.getMessage()), e);
+            }
+            return JMX.newMXBeanProxy(mbsc, name, type);
+        }
+
+        @Override
+        ObjectName mxbeanToObjectName(Object mxbean)
+        throws OpenDataException {
+            ObjectName name = proxyToObjectName(mxbean);
+            String domain = name.getDomain();
+            if (!domain.startsWith(prefix)) {
+                throw new OpenDataException(
+                        "Proxy's name does not start with " + prefix + ": " + name);
+            }
+            try {
+                name = switchDomain(domain.substring(prefix.length()), name);
+            } catch (MalformedObjectNameException e) {
+                throw EnvHelp.initCause(new OpenDataException(e.getMessage()), e);
+            }
+            return name;
         }
     }
 
-    synchronized <T> T objectNameToMXBean(ObjectName name, Class<T> type) {
-        WeakReference<Object> wr = objectNameToProxy.get(name);
-        if (wr != null) {
-            Object proxy = wr.get();
-            if (type.isInstance(proxy))
-                return type.cast(proxy);
+    ObjectName proxyToObjectName(Object proxy) {
+        InvocationHandler ih = Proxy.getInvocationHandler(proxy);
+        if (ih instanceof MBeanServerInvocationHandler) {
+            MBeanServerInvocationHandler mbsih =
+                    (MBeanServerInvocationHandler) ih;
+            if (mbsih.getMBeanServerConnection().equals(mbsc))
+                return mbsih.getObjectName();
         }
-        T proxy = JMX.newMXBeanProxy(mbsc, name, type);
-        objectNameToProxy.put(name, new WeakReference<Object>(proxy));
-        return proxy;
+        return null;
+    }
+
+    static MXBeanLookup getLookup() {
+        return currentLookup.get();
     }
 
-    synchronized ObjectName mxbeanToObjectName(Object mxbean) {
-        if (mxbean instanceof Proxy) {
-            InvocationHandler ih = Proxy.getInvocationHandler(mxbean);
-            if (ih instanceof MBeanServerInvocationHandler) {
-                MBeanServerInvocationHandler mbsih =
-                        (MBeanServerInvocationHandler) ih;
-                if (mbsih.getMBeanServerConnection().equals(mbsc))
-                    return mbsih.getObjectName();
-            }
-            return null;
-        } else
-            return mxbeanToObjectName.get(mxbean);
-    }
-
-    synchronized void addReference(ObjectName name, Object mxbean) {
-        mxbeanToObjectName.put(mxbean, name);
+    static void setLookup(MXBeanLookup lookup) {
+        currentLookup.set(lookup);
     }
 
-    synchronized boolean removeReference(ObjectName name, Object mxbean) {
-        if (name.equals(mxbeanToObjectName.get(mxbean))) {
-            mxbeanToObjectName.remove(mxbean);
-            return true;
-        } else
-            return false;
-        /* removeReference can be called when the above condition fails,
-         * notably if you try to register the same MXBean twice.
-         */
+    // Method temporarily added until we have ObjectName.switchDomain in the
+    // public API.  Note that this method DOES NOT PRESERVE the order of
+    // keys in the ObjectName so it must not be used in the final release.
+    static ObjectName switchDomain(String domain, ObjectName name)
+            throws MalformedObjectNameException {
+        return new ObjectName(domain, name.getKeyPropertyList());
     }
 
-    private final MBeanServerConnection mbsc;
-    private final WeakIdentityHashMap<Object, ObjectName>
-        mxbeanToObjectName = WeakIdentityHashMap.make();
-    private final Map<ObjectName, WeakReference<Object>>
-        objectNameToProxy = newMap();
-    private static WeakIdentityHashMap<MBeanServerConnection,
-                                       WeakReference<MXBeanLookup>>
-        mbscToLookup = WeakIdentityHashMap.make();
+    private static final ThreadLocal<MXBeanLookup> currentLookup =
+            new ThreadLocal<MXBeanLookup>();
+
+    final MBeanServerConnection mbsc;
 }
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanProxy.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanProxy.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -27,14 +27,15 @@
 
 import static com.sun.jmx.mbeanserver.Util.*;
 
-import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.util.Map;
 
 import javax.management.Attribute;
 import javax.management.MBeanServerConnection;
+import javax.management.MalformedObjectNameException;
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
    <p>Helper class for an {@link InvocationHandler} that forwards methods from an
@@ -46,8 +47,7 @@
    @since 1.6
 */
 public class MXBeanProxy {
-    public MXBeanProxy(Class<?> mxbeanInterface)
-            throws IllegalArgumentException {
+    public MXBeanProxy(Class<?> mxbeanInterface, MXBeanMappingFactory factory) {
 
         if (mxbeanInterface == null)
             throw new IllegalArgumentException("Null parameter");
@@ -55,14 +55,15 @@
         final MBeanAnalyzer<ConvertingMethod> analyzer;
         try {
             analyzer =
-                MXBeanIntrospector.getInstance().getAnalyzer(mxbeanInterface);
+                MXBeanIntrospector.getInstance(factory).getAnalyzer(mxbeanInterface);
         } catch (NotCompliantMBeanException e) {
             throw new IllegalArgumentException(e);
         }
         analyzer.visit(new Visitor());
     }
 
-    private class Visitor implements MBeanAnalyzer.MBeanVisitor<ConvertingMethod> {
+    private class Visitor
+            implements MBeanAnalyzer.MBeanVisitor<ConvertingMethod, RuntimeException> {
         public void visitAttribute(String attributeName,
                                    ConvertingMethod getter,
                                    ConvertingMethod setter) {
@@ -160,10 +161,29 @@
 
         Handler handler = handlerMap.get(method);
         ConvertingMethod cm = handler.getConvertingMethod();
-        MXBeanLookup lookup = MXBeanLookup.lookupFor(mbsc);
-        Object[] openArgs = cm.toOpenParameters(lookup, args);
-        Object result = handler.invoke(mbsc, name, openArgs);
-        return cm.fromOpenReturnValue(lookup, result);
+        String prefix = extractPrefix(name);
+        MXBeanLookup lookup = MXBeanLookup.lookupFor(mbsc, prefix);
+        MXBeanLookup oldLookup = MXBeanLookup.getLookup();
+        try {
+            MXBeanLookup.setLookup(lookup);
+            Object[] openArgs = cm.toOpenParameters(lookup, args);
+            Object result = handler.invoke(mbsc, name, openArgs);
+            return cm.fromOpenReturnValue(lookup, result);
+        } finally {
+            MXBeanLookup.setLookup(oldLookup);
+        }
+    }
+
+    private static String extractPrefix(ObjectName name)
+            throws MalformedObjectNameException {
+        String domain = name.getDomain();
+        int slashslash = domain.lastIndexOf("//");
+        if (slashslash > 0 && domain.charAt(slashslash - 1) == '/')
+            slashslash--;
+        if (slashslash >= 0)
+            return domain.substring(0, slashslash + 2);
+        else
+            return null;
     }
 
     private final Map<Method, Handler> handlerMap = newMap();
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -35,6 +35,8 @@
 import javax.management.MBeanServer;
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.MXBeanMappingFactoryClass;
 
 /**
  * Base class for MXBeans.
@@ -61,14 +63,16 @@
        if it does not implement the class {@code mxbeanInterface} or if
        that class is not a valid MXBean interface.
     */
-    public <T> MXBeanSupport(T resource, Class<T> mxbeanInterface)
+    public <T> MXBeanSupport(T resource, Class<T> mxbeanInterface,
+                             MXBeanMappingFactory mappingFactory)
             throws NotCompliantMBeanException {
-        super(resource, mxbeanInterface);
+        super(resource, mxbeanInterface, mappingFactory);
     }
 
     @Override
-    MBeanIntrospector<ConvertingMethod> getMBeanIntrospector() {
-        return MXBeanIntrospector.getInstance();
+    MBeanIntrospector<ConvertingMethod>
+            getMBeanIntrospector(MXBeanMappingFactory mappingFactory) {
+        return MXBeanIntrospector.getInstance(mappingFactory);
     }
 
     @Override
@@ -76,8 +80,7 @@
         return mxbeanLookup;
     }
 
-    static Class<?> findMXBeanInterface(Class<?> resourceClass)
-        throws IllegalArgumentException {
+    static <T> Class<? super T> findMXBeanInterface(Class<T> resourceClass) {
         if (resourceClass == null)
             throw new IllegalArgumentException("Null resource class");
         final Set<Class<?>> intfs = transitiveInterfaces(resourceClass);
@@ -104,7 +107,7 @@
             throw new IllegalArgumentException(msg);
         }
         if (candidates.iterator().hasNext()) {
-            return candidates.iterator().next();
+            return Util.cast(candidates.iterator().next());
         } else {
             final String msg =
                 "Class " + resourceClass.getName() +
@@ -116,7 +119,7 @@
     /* Return all interfaces inherited by this class, directly or
      * indirectly through the parent class and interfaces.
      */
-    private static Set<Class<?>> transitiveInterfaces(Class c) {
+    private static Set<Class<?>> transitiveInterfaces(Class<?> c) {
         Set<Class<?>> set = newSet();
         transitiveInterfaces(c, set);
         return set;
@@ -127,7 +130,7 @@
         if (c.isInterface())
             intfs.add(c);
         transitiveInterfaces(c.getSuperclass(), intfs);
-        for (Class sup : c.getInterfaces())
+        for (Class<?> sup : c.getInterfaces())
             transitiveInterfaces(sup, intfs);
     }
 
@@ -157,12 +160,7 @@
         // eventually we could have some logic to supply a default name
 
         synchronized (lock) {
-            if (this.objectName != null) {
-                final String msg =
-                    "MXBean already registered with name " + this.objectName;
-                throw new InstanceAlreadyExistsException(msg);
-            }
-            this.mxbeanLookup = MXBeanLookup.lookupFor(server);
+            this.mxbeanLookup = MXBeanLookup.Plain.lookupFor(server);
             this.mxbeanLookup.addReference(name, getResource());
             this.objectName = name;
         }
@@ -171,12 +169,20 @@
     @Override
     public void unregister() {
         synchronized (lock) {
-            if (mxbeanLookup.removeReference(objectName, getResource()))
-                objectName = null;
+            if (mxbeanLookup != null) {
+                if (mxbeanLookup.removeReference(objectName, getResource()))
+                    objectName = null;
+            }
+            // XXX: need to revisit the whole register/unregister logic in
+            // the face of wrapping.  The mxbeanLookup!=null test is a hack.
+            // If you wrap an MXBean in a MyWrapperMBean and register it,
+            // the lookup table should contain the wrapped object.  But that
+            // implies that MyWrapperMBean calls register, which today it
+            // can't within the public API.
         }
     }
+    private final Object lock = new Object(); // for mxbeanLookup and objectName
 
-    private Object lock = new Object(); // for mxbeanLookup and objectName
-    private MXBeanLookup mxbeanLookup;
+    private MXBeanLookup.Plain mxbeanLookup;
     private ObjectName objectName;
 }
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/NotificationMBeanSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/NotificationMBeanSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -30,6 +30,7 @@
 import java.util.List;
 import javax.management.NotCompliantMBeanException;
 import javax.management.Notification;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
  * <p>A variant of {@code StandardMBeanSupport} where the only
@@ -48,7 +49,7 @@
     }
 
     @Override
-    MBeanIntrospector<Method> getMBeanIntrospector() {
+    MBeanIntrospector<Method> getMBeanIntrospector(MXBeanMappingFactory ignored) {
         return introspector;
     }
 
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/OpenConverter.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1465 +0,0 @@
-/*
- * Copyright 2005-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 com.sun.jmx.mbeanserver;
-
-import static com.sun.jmx.mbeanserver.Util.*;
-
-import static javax.management.openmbean.SimpleType.*;
-
-import com.sun.jmx.remote.util.EnvHelp;
-
-import java.beans.ConstructorProperties;
-import java.io.InvalidObjectException;
-import java.lang.annotation.ElementType;
-import java.lang.ref.WeakReference;
-import java.lang.reflect.Array;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Proxy;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.BitSet;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.WeakHashMap;
-
-import javax.management.JMX;
-import javax.management.ObjectName;
-import javax.management.openmbean.ArrayType;
-import javax.management.openmbean.CompositeData;
-import javax.management.openmbean.CompositeDataInvocationHandler;
-import javax.management.openmbean.CompositeDataSupport;
-import javax.management.openmbean.CompositeDataView;
-import javax.management.openmbean.CompositeType;
-import javax.management.openmbean.OpenDataException;
-import javax.management.openmbean.OpenType;
-import javax.management.openmbean.SimpleType;
-import javax.management.openmbean.TabularData;
-import javax.management.openmbean.TabularDataSupport;
-import javax.management.openmbean.TabularType;
-
-/**
-   <p>A converter between Java types and the limited set of classes
-   defined by Open MBeans.</p>
-
-   <p>A Java type is an instance of java.lang.reflect.Type.  For our
-   purposes, it is either a Class, such as String.class or int.class;
-   or a ParameterizedType, such as List<String> or Map<Integer,
-   String[]>.  On J2SE 1.4 and earlier, it can only be a Class.</p>
-
-   <p>Each Type is associated with an OpenConverter.  The
-   OpenConverter defines an OpenType corresponding to the Type, plus a
-   Java class corresponding to the OpenType.  For example:</p>
-
-   <pre>
-   Type                     Open class     OpenType
-   ----                     ----------     --------
-   Integer                  Integer        SimpleType.INTEGER
-   int                      int            SimpleType.INTEGER
-   Integer[]                Integer[]      ArrayType(1, SimpleType.INTEGER)
-   int[]                    Integer[]      ArrayType(SimpleType.INTEGER, true)
-   String[][]               String[][]     ArrayType(2, SimpleType.STRING)
-   List<String>             String[]       ArrayType(1, SimpleType.STRING)
-   ThreadState (an Enum)    String         SimpleType.STRING
-   Map<Integer, String[]>   TabularData    TabularType(
-                                             CompositeType(
-                                               {"key", SimpleType.INTEGER},
-                                               {"value",
-                                                 ArrayType(1,
-                                                  SimpleType.STRING)}),
-                                             indexNames={"key"})
-   </pre>
-
-   <p>Apart from simple types, arrays, and collections, Java types are
-   converted through introspection into CompositeType.  The Java type
-   must have at least one getter (method such as "int getSize()" or
-   "boolean isBig()"), and we must be able to deduce how to
-   reconstruct an instance of the Java class from the values of the
-   getters using one of various heuristics.</p>
-
-   @since 1.6
- */
-public abstract class OpenConverter {
-    private OpenConverter(Type targetType, OpenType openType,
-                          Class openClass) {
-        this.targetType = targetType;
-        this.openType = openType;
-        this.openClass = openClass;
-    }
-
-    /** <p>Convert an instance of openClass into an instance of targetType. */
-    public final Object fromOpenValue(MXBeanLookup lookup, Object value)
-            throws InvalidObjectException {
-        if (value == null)
-            return null;
-        else
-            return fromNonNullOpenValue(lookup, value);
-    }
-
-    abstract Object fromNonNullOpenValue(MXBeanLookup lookup, Object value)
-            throws InvalidObjectException;
-
-    /** <p>Throw an appropriate InvalidObjectException if we will not be able
-        to convert back from the open data to the original Java object.</p> */
-    void checkReconstructible() throws InvalidObjectException {
-        // subclasses override if action necessary
-    }
-
-    /** <p>Convert an instance of targetType into an instance of openClass. */
-    final Object toOpenValue(MXBeanLookup lookup, Object value)
-            throws OpenDataException {
-        if (value == null)
-            return null;
-        else
-            return toNonNullOpenValue(lookup, value);
-    }
-
-    abstract Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-            throws OpenDataException;
-
-    /** <p>True if and only if this OpenConverter's toOpenValue and fromOpenValue
-        methods are the identity function.</p> */
-    boolean isIdentity() {
-        return false;
-    }
-
-    /** <p>True if and only if isIdentity() and even an array of the underlying type
-       is transformed as the identity.  This is true for Integer and
-       ObjectName, for instance, but not for int.</p> */
-    final Type getTargetType() {
-        return targetType;
-    }
-
-    final OpenType getOpenType() {
-        return openType;
-    }
-
-    /* The Java class corresponding to getOpenType().  This is the class
-       named by getOpenType().getClassName(), except that it may be a
-       primitive type or an array of primitive type.  */
-    final Class getOpenClass() {
-        return openClass;
-    }
-
-    private final Type targetType;
-    private final OpenType openType;
-    private final Class openClass;
-
-    private static final class ConverterMap
-        extends WeakHashMap<Type, WeakReference<OpenConverter>> {}
-
-    private static final ConverterMap converterMap = new ConverterMap();
-
-    /** Following List simply serves to keep a reference to predefined
-        OpenConverters so they don't get garbage collected. */
-    private static final List<OpenConverter> permanentConverters = newList();
-
-    private static synchronized OpenConverter getConverter(Type type) {
-        WeakReference<OpenConverter> wr = converterMap.get(type);
-        return (wr == null) ? null : wr.get();
-    }
-
-    private static synchronized void putConverter(Type type,
-                                                  OpenConverter conv) {
-        WeakReference<OpenConverter> wr =
-            new WeakReference<OpenConverter>(conv);
-        converterMap.put(type, wr);
-    }
-
-    private static synchronized void putPermanentConverter(Type type,
-                                                           OpenConverter conv) {
-        putConverter(type, conv);
-        permanentConverters.add(conv);
-    }
-
-    static {
-        /* Set up the mappings for Java types that map to SimpleType.  */
-
-        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;
-            try {
-                c = Class.forName(t.getClassName(), false,
-                                  ObjectName.class.getClassLoader());
-            } catch (ClassNotFoundException e) {
-                // the classes that these predefined types declare must exist!
-                throw new Error(e);
-            }
-            final OpenConverter conv = new IdentityConverter(c, t, c);
-            putPermanentConverter(c, conv);
-
-            if (c.getName().startsWith("java.lang.")) {
-                try {
-                    final Field typeField = c.getField("TYPE");
-                    final Class primitiveType = (Class) typeField.get(null);
-                    final OpenConverter primitiveConv =
-                        new IdentityConverter(primitiveType, t, primitiveType);
-                    putPermanentConverter(primitiveType,
-                                          primitiveConv);
-                    if (primitiveType != void.class) {
-                        final Class<?> primitiveArrayType =
-                            Array.newInstance(primitiveType, 0).getClass();
-                        final OpenType primitiveArrayOpenType =
-                            ArrayType.getPrimitiveArrayType(primitiveArrayType);
-                        final OpenConverter primitiveArrayConv =
-                            new IdentityConverter(primitiveArrayType,
-                                                  primitiveArrayOpenType,
-                                                  primitiveArrayType);
-                        putPermanentConverter(primitiveArrayType,
-                                              primitiveArrayConv);
-                    }
-                } catch (NoSuchFieldException e) {
-                    // OK: must not be a primitive wrapper
-                } catch (IllegalAccessException e) {
-                    // Should not reach here
-                    assert(false);
-                }
-            }
-        }
-    }
-
-    /** Get the converter for the given Java type, creating it if necessary. */
-    public static synchronized OpenConverter toConverter(Type objType)
-            throws OpenDataException {
-
-        if (inProgress.containsKey(objType))
-            throw new OpenDataException("Recursive data structure");
-
-        OpenConverter conv;
-
-        conv = getConverter(objType);
-        if (conv != null)
-            return conv;
-
-        inProgress.put(objType, objType);
-        try {
-            conv = makeConverter(objType);
-        } finally {
-            inProgress.remove(objType);
-        }
-
-        putConverter(objType, conv);
-        return conv;
-    }
-
-    private static OpenConverter makeConverter(Type objType)
-            throws OpenDataException {
-
-        /* It's not yet worth formalizing these tests by having for example
-           an array of factory classes, each of which says whether it
-           recognizes the Type (Chain of Responsibility pattern).  */
-        if (objType instanceof GenericArrayType) {
-            Type componentType =
-                ((GenericArrayType) objType).getGenericComponentType();
-            return makeArrayOrCollectionConverter(objType, componentType);
-        } 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 makeEnumConverter(objClass, ElementType.class);
-            } else if (objClass.isArray()) {
-                Type componentType = objClass.getComponentType();
-                return makeArrayOrCollectionConverter(objClass, componentType);
-            } else if (JMX.isMXBeanInterface(objClass)) {
-                return makeMXBeanConverter(objClass);
-            } else {
-                return makeCompositeConverter(objClass);
-            }
-        } else if (objType instanceof ParameterizedType) {
-            return makeParameterizedConverter((ParameterizedType) objType);
-        } else
-            throw new OpenDataException("Cannot map type: " + objType);
-    }
-
-    private static <T extends Enum<T>> OpenConverter
-            makeEnumConverter(Class<?> enumClass, Class<T> fake) {
-        Class<T> enumClassT = Util.cast(enumClass);
-        return new EnumConverter<T>(enumClassT);
-    }
-
-    /* Make the converter for an array type, or a collection such as
-     * List<String> or Set<Integer>.  We never see one-dimensional
-     * primitive arrays (e.g. int[]) here because they use the identity
-     * converter and are registered as such in the static initializer.
-     */
-    private static OpenConverter
-        makeArrayOrCollectionConverter(Type collectionType, Type elementType)
-            throws OpenDataException {
-
-        final OpenConverter elementConverter = toConverter(elementType);
-        final OpenType<?> elementOpenType = elementConverter.getOpenType();
-        final ArrayType<?> openType = ArrayType.getArrayType(elementOpenType);
-        final Class<?> elementOpenClass = elementConverter.getOpenClass();
-
-        final Class<?> openArrayClass;
-        final String openArrayClassName;
-        if (elementOpenClass.isArray())
-            openArrayClassName = "[" + elementOpenClass.getName();
-        else
-            openArrayClassName = "[L" + elementOpenClass.getName() + ";";
-        try {
-            openArrayClass = Class.forName(openArrayClassName);
-        } catch (ClassNotFoundException e) {
-            throw openDataException("Cannot obtain array class", e);
-        }
-
-        if (collectionType instanceof ParameterizedType) {
-            return new CollectionConverter(collectionType,
-                                           openType, openArrayClass,
-                                           elementConverter);
-        } else {
-            if (elementConverter.isIdentity()) {
-                return new IdentityConverter(collectionType,
-                                             openType,
-                                             openArrayClass);
-            } else {
-                return new ArrayConverter(collectionType,
-                                          openType,
-                                          openArrayClass,
-                                          elementConverter);
-            }
-        }
-    }
-
-    private static final String[] keyArray = {"key"};
-    private static final String[] keyValueArray = {"key", "value"};
-
-    private static OpenConverter
-        makeTabularConverter(Type objType, boolean sortedMap,
-                             Type keyType, Type valueType)
-            throws OpenDataException {
-
-        final String objTypeName = objType.toString();
-        final OpenConverter keyConverter = toConverter(keyType);
-        final OpenConverter valueConverter = toConverter(valueType);
-        final OpenType keyOpenType = keyConverter.getOpenType();
-        final OpenType valueOpenType = valueConverter.getOpenType();
-        final CompositeType rowType =
-            new CompositeType(objTypeName,
-                              objTypeName,
-                              keyValueArray,
-                              keyValueArray,
-                              new OpenType[] {keyOpenType, valueOpenType});
-        final TabularType tabularType =
-            new TabularType(objTypeName, objTypeName, rowType, keyArray);
-        return new TabularConverter(objType, sortedMap, tabularType,
-                                    keyConverter, valueConverter);
-    }
-
-    /* We know how to translate List<E>, Set<E>, SortedSet<E>,
-       Map<K,V>, SortedMap<K,V>, and that's it.  We don't accept
-       subtypes of those because we wouldn't know how to deserialize
-       them.  We don't accept Queue<E> because it is unlikely people
-       would use that as a parameter or return type in an MBean.  */
-    private static OpenConverter
-        makeParameterizedConverter(ParameterizedType objType) throws OpenDataException {
-
-        final Type rawType = objType.getRawType();
-
-        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);
-                if (c == SortedSet.class)
-                    mustBeComparable(c, actuals[0]);
-                return makeArrayOrCollectionConverter(objType, actuals[0]);
-            } else {
-                boolean sortedMap = (c == SortedMap.class);
-                if (c == Map.class || sortedMap) {
-                    Type[] actuals = objType.getActualTypeArguments();
-                    assert(actuals.length == 2);
-                    if (sortedMap)
-                        mustBeComparable(c, actuals[0]);
-                    return makeTabularConverter(objType, sortedMap,
-                            actuals[0], actuals[1]);
-                }
-            }
-        }
-        throw new OpenDataException("Cannot convert type: " + objType);
-    }
-
-    private static OpenConverter makeMXBeanConverter(Type t)
-            throws OpenDataException {
-        return new MXBeanConverter(t);
-    }
-
-    private static OpenConverter makeCompositeConverter(Class c)
-            throws OpenDataException {
-
-        // For historical reasons GcInfo implements CompositeData but we
-        // shouldn't count its CompositeData.getCompositeType() field as
-        // an item in the computed CompositeType.
-        final boolean gcInfoHack =
-            (c.getName().equals("com.sun.management.GcInfo") &&
-                c.getClassLoader() == null);
-
-        final List<Method> methods =
-                MBeanAnalyzer.eliminateCovariantMethods(Arrays.asList(c.getMethods()));
-        final SortedMap<String,Method> getterMap = newSortedMap();
-
-        /* Select public methods that look like "T getX()" or "boolean
-           isX()", where T is not void and X is not the empty
-           string.  Exclude "Class getClass()" inherited from Object.  */
-        for (Method method : methods) {
-            final String propertyName = propertyName(method);
-
-            if (propertyName == null)
-                continue;
-            if (gcInfoHack && propertyName.equals("CompositeType"))
-                continue;
-
-            Method old =
-                getterMap.put(decapitalize(propertyName),
-                            method);
-            if (old != null) {
-                final String msg =
-                    "Class " + c.getName() + " has method name clash: " +
-                    old.getName() + ", " + method.getName();
-                throw new OpenDataException(msg);
-            }
-        }
-
-        final int nitems = getterMap.size();
-
-        if (nitems == 0) {
-            throw new OpenDataException("Can't map " + c.getName() +
-                                        " to an open data type");
-        }
-
-        final Method[] getters = new Method[nitems];
-        final String[] itemNames = new String[nitems];
-        final OpenType[] openTypes = new OpenType[nitems];
-        int i = 0;
-        for (Map.Entry<String,Method> entry : getterMap.entrySet()) {
-            itemNames[i] = entry.getKey();
-            final Method getter = entry.getValue();
-            getters[i] = getter;
-            final Type retType = getter.getGenericReturnType();
-            openTypes[i] = toConverter(retType).getOpenType();
-            i++;
-        }
-
-        CompositeType compositeType =
-            new CompositeType(c.getName(),
-                              c.getName(),
-                              itemNames, // field names
-                              itemNames, // field descriptions
-                              openTypes);
-
-        return new CompositeConverter(c,
-                                      compositeType,
-                                      itemNames,
-                                      getters);
-    }
-
-    /* Converter for classes where the open data is identical to the
-       original data.  This is true for any of the SimpleType types,
-       and for an any-dimension array of those.  It is also true for
-       primitive types as of JMX 1.3, since an int[] needs to
-       can be directly represented by an ArrayType, and an int needs no mapping
-       because reflection takes care of it.  */
-    private static final class IdentityConverter extends OpenConverter {
-        IdentityConverter(Type targetType, OpenType openType,
-                          Class openClass) {
-            super(targetType, openType, openClass);
-        }
-
-        boolean isIdentity() {
-            return true;
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value) {
-            return value;
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object value) {
-            return value;
-        }
-    }
-
-    private static final class EnumConverter<T extends Enum<T>>
-            extends OpenConverter {
-
-        EnumConverter(Class<T> enumClass) {
-            super(enumClass, SimpleType.STRING, String.class);
-            this.enumClass = enumClass;
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value) {
-            return ((Enum) value).name();
-        }
-
-        // return type could be T, but after erasure that would be
-        // java.lang.Enum, which doesn't exist on J2SE 1.4
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws InvalidObjectException {
-            try {
-                return Enum.valueOf(enumClass, (String) value);
-            } catch (Exception e) {
-                throw invalidObjectException("Cannot convert to enum: " +
-                                             value, e);
-            }
-        }
-
-        private final Class<T> enumClass;
-    }
-
-    private static final class ArrayConverter extends OpenConverter {
-        ArrayConverter(Type targetType,
-                       ArrayType openArrayType, Class openArrayClass,
-                       OpenConverter elementConverter) {
-            super(targetType, openArrayType, openArrayClass);
-            this.elementConverter = elementConverter;
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws OpenDataException {
-            Object[] valueArray = (Object[]) value;
-            final int len = valueArray.length;
-            final Object[] openArray = (Object[])
-                Array.newInstance(getOpenClass().getComponentType(), len);
-            for (int i = 0; i < len; i++) {
-                openArray[i] =
-                    elementConverter.toOpenValue(lookup, valueArray[i]);
-            }
-            return openArray;
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object openValue)
-                throws InvalidObjectException {
-            final Object[] openArray = (Object[]) openValue;
-            final Type targetType = getTargetType();
-            final Object[] valueArray;
-            final Type componentType;
-            if (targetType instanceof GenericArrayType) {
-                componentType =
-                    ((GenericArrayType) targetType).getGenericComponentType();
-            } else if (targetType instanceof Class &&
-                       ((Class<?>) targetType).isArray()) {
-                componentType = ((Class<?>) targetType).getComponentType();
-            } else {
-                throw new IllegalArgumentException("Not an array: " +
-                                                   targetType);
-            }
-            valueArray = (Object[]) Array.newInstance((Class<?>) componentType,
-                                                      openArray.length);
-            for (int i = 0; i < openArray.length; i++) {
-                valueArray[i] =
-                    elementConverter.fromOpenValue(lookup, openArray[i]);
-            }
-            return valueArray;
-        }
-
-        void checkReconstructible() throws InvalidObjectException {
-            elementConverter.checkReconstructible();
-        }
-
-        /** OpenConverter for the elements of this array.  If this is an
-            array of arrays, the converter converts the second-level arrays,
-            not the deepest elements.  */
-        private final OpenConverter elementConverter;
-    }
-
-    private static final class CollectionConverter extends OpenConverter {
-        CollectionConverter(Type targetType,
-                            ArrayType openArrayType,
-                            Class openArrayClass,
-                            OpenConverter elementConverter) {
-            super(targetType, openArrayType, openArrayClass);
-            this.elementConverter = elementConverter;
-
-            /* Determine the concrete class to be used when converting
-               back to this Java type.  We convert all Lists to ArrayList
-               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;
-            if (c == List.class)
-                collectionClass = ArrayList.class;
-            else if (c == Set.class)
-                collectionClass = HashSet.class;
-            else if (c == SortedSet.class)
-                collectionClass = TreeSet.class;
-            else { // can't happen
-                assert(false);
-                collectionClass = null;
-            }
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws OpenDataException {
-            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: " +
-                        comparator;
-                    throw new OpenDataException(msg);
-                }
-            }
-            final Object[] openArray = (Object[])
-                Array.newInstance(getOpenClass().getComponentType(),
-                                  valueCollection.size());
-            int i = 0;
-            for (Object o : valueCollection)
-                openArray[i++] = elementConverter.toOpenValue(lookup, o);
-            return openArray;
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object openValue)
-                throws InvalidObjectException {
-            final Object[] openArray = (Object[]) openValue;
-            final Collection<Object> valueCollection;
-            try {
-                valueCollection = Util.cast(collectionClass.newInstance());
-            } catch (Exception e) {
-                throw invalidObjectException("Cannot create collection", e);
-            }
-            for (Object o : openArray) {
-                Object value = elementConverter.fromOpenValue(lookup, o);
-                if (!valueCollection.add(value)) {
-                    final String msg =
-                        "Could not add " + o + " to " +
-                        collectionClass.getName() +
-                        " (duplicate set element?)";
-                    throw new InvalidObjectException(msg);
-                }
-            }
-            return valueCollection;
-        }
-
-        void checkReconstructible() throws InvalidObjectException {
-            elementConverter.checkReconstructible();
-        }
-
-        private final Class<? extends Collection> collectionClass;
-        private final OpenConverter elementConverter;
-    }
-
-    private static final class MXBeanConverter extends OpenConverter {
-        MXBeanConverter(Type intf) {
-            super(intf, SimpleType.OBJECTNAME, ObjectName.class);
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws OpenDataException {
-            lookupNotNull(lookup, OpenDataException.class);
-            ObjectName name = lookup.mxbeanToObjectName(value);
-            if (name == null)
-                throw new OpenDataException("No name for object: " + value);
-            return name;
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws InvalidObjectException {
-            lookupNotNull(lookup, InvalidObjectException.class);
-            ObjectName name = (ObjectName) value;
-            Object mxbean =
-                lookup.objectNameToMXBean(name, (Class<?>) getTargetType());
-            if (mxbean == null) {
-                final String msg =
-                    "No MXBean for name: " + name;
-                throw new InvalidObjectException(msg);
-            }
-            return mxbean;
-        }
-
-        private <T extends Exception> void
-            lookupNotNull(MXBeanLookup lookup, Class<T> excClass)
-                throws T {
-            if (lookup == null) {
-                final String msg =
-                    "Cannot convert MXBean interface in this context";
-                T exc;
-                try {
-                    Constructor<T> con = excClass.getConstructor(String.class);
-                    exc = con.newInstance(msg);
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
-                }
-                throw exc;
-            }
-        }
-    }
-
-    private static final class TabularConverter extends OpenConverter {
-        TabularConverter(Type targetType,
-                         boolean sortedMap,
-                         TabularType tabularType,
-                         OpenConverter keyConverter,
-                         OpenConverter valueConverter) {
-            super(targetType, tabularType, TabularData.class);
-            this.sortedMap = sortedMap;
-            this.keyConverter = keyConverter;
-            this.valueConverter = valueConverter;
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws OpenDataException {
-            final Map<Object, Object> valueMap = Util.cast(value);
-            if (valueMap instanceof SortedMap) {
-                Comparator comparator = ((SortedMap) valueMap).comparator();
-                if (comparator != null) {
-                    final String msg =
-                        "Cannot convert SortedMap with non-null comparator: " +
-                        comparator;
-                    throw new OpenDataException(msg);
-                }
-            }
-            final TabularType tabularType = (TabularType) getOpenType();
-            final TabularData table = new TabularDataSupport(tabularType);
-            final CompositeType rowType = tabularType.getRowType();
-            for (Map.Entry entry : valueMap.entrySet()) {
-                final Object openKey =
-                    keyConverter.toOpenValue(lookup, entry.getKey());
-                final Object openValue =
-                    valueConverter.toOpenValue(lookup, entry.getValue());
-                final CompositeData row;
-                row =
-                    new CompositeDataSupport(rowType, keyValueArray,
-                                             new Object[] {openKey,
-                                                           openValue});
-                table.put(row);
-            }
-            return table;
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object openValue)
-                throws InvalidObjectException {
-            final TabularData table = (TabularData) openValue;
-            final Collection<CompositeData> rows = Util.cast(table.values());
-            final Map<Object, Object> valueMap =
-                sortedMap ? newSortedMap() : newMap();
-            for (CompositeData row : rows) {
-                final Object key =
-                    keyConverter.fromOpenValue(lookup, row.get("key"));
-                final Object value =
-                    valueConverter.fromOpenValue(lookup, row.get("value"));
-                if (valueMap.put(key, value) != null) {
-                    final String msg =
-                        "Duplicate entry in TabularData: key=" + key;
-                    throw new InvalidObjectException(msg);
-                }
-            }
-            return valueMap;
-        }
-
-        void checkReconstructible() throws InvalidObjectException {
-            keyConverter.checkReconstructible();
-            valueConverter.checkReconstructible();
-        }
-
-        private final boolean sortedMap;
-        private final OpenConverter keyConverter;
-        private final OpenConverter valueConverter;
-    }
-
-    private static final class CompositeConverter extends OpenConverter {
-        CompositeConverter(Class targetClass,
-                           CompositeType compositeType,
-                           String[] itemNames,
-                           Method[] getters) throws OpenDataException {
-            super(targetClass, compositeType, CompositeData.class);
-
-            assert(itemNames.length == getters.length);
-
-            this.itemNames = itemNames;
-            this.getters = getters;
-            this.getterConverters = new OpenConverter[getters.length];
-            for (int i = 0; i < getters.length; i++) {
-                Type retType = getters[i].getGenericReturnType();
-                getterConverters[i] = OpenConverter.toConverter(retType);
-            }
-        }
-
-        final Object toNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws OpenDataException {
-            CompositeType ct = (CompositeType) getOpenType();
-            if (value instanceof CompositeDataView)
-                return ((CompositeDataView) value).toCompositeData(ct);
-            if (value == null)
-                return null;
-
-            Object[] values = new Object[getters.length];
-            for (int i = 0; i < getters.length; i++) {
-                try {
-                    Object got = getters[i].invoke(value, (Object[]) null);
-                    values[i] = getterConverters[i].toOpenValue(lookup, got);
-                } catch (Exception e) {
-                    throw openDataException("Error calling getter for " +
-                                            itemNames[i] + ": " + e, e);
-                }
-            }
-            return new CompositeDataSupport(ct, itemNames, values);
-        }
-
-        /** Determine how to convert back from the CompositeData into
-            the original Java type.  For a type that is not reconstructible,
-            this method will fail every time, and will throw the right
-            exception. */
-        private synchronized void makeCompositeBuilder()
-                throws InvalidObjectException {
-            if (compositeBuilder != null)
-                return;
-
-            Class targetClass = (Class<?>) getTargetType();
-            /* 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.  */
-            CompositeBuilder[][] builders = {
-                {
-                    new CompositeBuilderViaFrom(targetClass, itemNames),
-                },
-                {
-                    new CompositeBuilderViaConstructor(targetClass, itemNames),
-                },
-                {
-                    new CompositeBuilderCheckGetters(targetClass, itemNames,
-                                                     getterConverters),
-                    new CompositeBuilderViaSetters(targetClass, itemNames),
-                    new CompositeBuilderViaProxy(targetClass, itemNames),
-                },
-            };
-            CompositeBuilder foundBuilder = null;
-            /* We try to make a meaningful exception message by
-               concatenating each Builder's explanation of why it
-               isn't applicable.  */
-            final StringBuilder whyNots = new StringBuilder();
-        find:
-            for (CompositeBuilder[] relatedBuilders : builders) {
-                for (int i = 0; i < relatedBuilders.length; i++) {
-                    CompositeBuilder builder = relatedBuilders[i];
-                    String whyNot = builder.applicable(getters);
-                    if (whyNot == null) {
-                        foundBuilder = builder;
-                        break find;
-                    }
-                    if (whyNot.length() > 0) {
-                        if (whyNots.length() > 0)
-                            whyNots.append("; ");
-                        whyNots.append(whyNot);
-                        if (i == 0)
-                           break; // skip other builders in this group
-                    }
-                }
-            }
-            if (foundBuilder == null) {
-                final String msg =
-                    "Do not know how to make a " + targetClass.getName() +
-                    " from a CompositeData: " + whyNots;
-                throw new InvalidObjectException(msg);
-            }
-            compositeBuilder = foundBuilder;
-        }
-
-        void checkReconstructible() throws InvalidObjectException {
-            makeCompositeBuilder();
-        }
-
-        public final Object fromNonNullOpenValue(MXBeanLookup lookup, Object value)
-                throws InvalidObjectException {
-            makeCompositeBuilder();
-            return compositeBuilder.fromCompositeData(lookup,
-                                                      (CompositeData) value,
-                                                      itemNames,
-                                                      getterConverters);
-        }
-
-        private final String[] itemNames;
-        private final Method[] getters;
-        private final OpenConverter[] getterConverters;
-        private CompositeBuilder compositeBuilder;
-    }
-
-    /** Converts from a CompositeData to an instance of the targetClass.  */
-    private static abstract class CompositeBuilder {
-        CompositeBuilder(Class targetClass, String[] itemNames) {
-            this.targetClass = targetClass;
-            this.itemNames = itemNames;
-        }
-
-        Class<?> getTargetClass() {
-            return targetClass;
-        }
-
-        String[] getItemNames() {
-            return itemNames;
-        }
-
-        /** If the subclass is appropriate for targetClass, then the
-            method returns null.  If the subclass is not appropriate,
-            then the method returns an explanation of why not.  If the
-            subclass should be appropriate but there is a problem,
-            then the method throws InvalidObjectException.  */
-        abstract String applicable(Method[] getters)
-                throws InvalidObjectException;
-
-        abstract Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                          String[] itemNames,
-                                          OpenConverter[] converters)
-                throws InvalidObjectException;
-
-        private final Class<?> targetClass;
-        private final String[] itemNames;
-    }
-
-    /** Builder for when the target class has a method "public static
-        from(CompositeData)".  */
-    private static final class CompositeBuilderViaFrom
-            extends CompositeBuilder {
-
-        CompositeBuilderViaFrom(Class targetClass, String[] itemNames) {
-            super(targetClass, itemNames);
-        }
-
-        String applicable(Method[] getters) throws InvalidObjectException {
-            // See if it has a method "T from(CompositeData)"
-            // as is conventional for a CompositeDataView
-            Class<?> targetClass = getTargetClass();
-            try {
-                Method fromMethod =
-                    targetClass.getMethod("from",
-                                          new Class[] {CompositeData.class});
-
-                if (!Modifier.isStatic(fromMethod.getModifiers())) {
-                    final String msg =
-                        "Method from(CompositeData) is not static";
-                    throw new InvalidObjectException(msg);
-                }
-
-                if (fromMethod.getReturnType() != getTargetClass()) {
-                    final String msg =
-                        "Method from(CompositeData) returns " +
-                        fromMethod.getReturnType().getName() +
-                        " not " + targetClass.getName();
-                    throw new InvalidObjectException(msg);
-                }
-
-                this.fromMethod = fromMethod;
-                return null; // success!
-            } catch (InvalidObjectException e) {
-                throw e;
-            } catch (Exception e) {
-                // OK: it doesn't have the method
-                return "no method from(CompositeData)";
-            }
-        }
-
-        final Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                 String[] itemNames,
-                                 OpenConverter[] converters)
-                throws InvalidObjectException {
-            try {
-                return fromMethod.invoke(null, cd);
-            } catch (Exception e) {
-                final String msg = "Failed to invoke from(CompositeData)";
-                throw invalidObjectException(msg, e);
-            }
-        }
-
-        private Method fromMethod;
-    }
-
-    /** This builder never actually returns success.  It simply serves
-        to check whether the other builders in the same group have any
-        chance of success.  If any getter in the targetClass returns
-        a type that we don't know how to reconstruct, then we will
-        not be able to make a builder, and there is no point in repeating
-        the error about the problematic getter as many times as there are
-        candidate builders.  Instead, the "applicable" method will return
-        an explanatory string, and the other builders will be skipped.
-        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,
-                                     OpenConverter[] getterConverters) {
-            super(targetClass, itemNames);
-            this.getterConverters = getterConverters;
-        }
-
-        String applicable(Method[] getters) {
-            for (int i = 0; i < getters.length; i++) {
-                try {
-                    getterConverters[i].checkReconstructible();
-                } catch (InvalidObjectException e) {
-                    return "method " + getters[i].getName() + " returns type " +
-                        "that cannot be mapped back from OpenData";
-                }
-            }
-            return "";
-        }
-
-        final Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                       String[] itemNames,
-                                       OpenConverter[] converters) {
-            throw new Error();
-        }
-
-        private final OpenConverter[] getterConverters;
-    }
-
-    /** Builder for when the target class has a setter for every getter. */
-    private static class CompositeBuilderViaSetters extends CompositeBuilder {
-
-        CompositeBuilderViaSetters(Class targetClass, String[] itemNames) {
-            super(targetClass, itemNames);
-        }
-
-        String applicable(Method[] getters) {
-            try {
-                Constructor<?> c = getTargetClass().getConstructor((Class[]) null);
-            } catch (Exception e) {
-                return "does not have a public no-arg constructor";
-            }
-
-            Method[] setters = new Method[getters.length];
-            for (int i = 0; i < getters.length; i++) {
-                Method getter = getters[i];
-                Class returnType = getter.getReturnType();
-                String name = propertyName(getter);
-                String setterName = "set" + name;
-                Method setter;
-                try {
-                    setter = getTargetClass().getMethod(setterName, returnType);
-                    if (setter.getReturnType() != void.class)
-                        throw new Exception();
-                } catch (Exception e) {
-                    return "not all getters have corresponding setters " +
-                           "(" + getter + ")";
-                }
-                setters[i] = setter;
-            }
-            this.setters = setters;
-            return null;
-        }
-
-        Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                 String[] itemNames,
-                                 OpenConverter[] converters)
-                throws InvalidObjectException {
-            Object o;
-            try {
-                o = getTargetClass().newInstance();
-                for (int i = 0; i < itemNames.length; i++) {
-                    if (cd.containsKey(itemNames[i])) {
-                        Object openItem = cd.get(itemNames[i]);
-                        Object javaItem =
-                            converters[i].fromOpenValue(lookup, openItem);
-                        setters[i].invoke(o, javaItem);
-                    }
-                }
-            } catch (Exception e) {
-                throw invalidObjectException(e);
-            }
-            return o;
-        }
-
-        private Method[] setters;
-    }
-
-    /** Builder for when the target class has a constructor that is
-        annotated with @ConstructorProperties so we can see the correspondence
-        to getters.  */
-    private static final class CompositeBuilderViaConstructor
-            extends CompositeBuilder {
-
-        CompositeBuilderViaConstructor(Class targetClass, String[] itemNames) {
-            super(targetClass, itemNames);
-        }
-
-        String applicable(Method[] getters) throws InvalidObjectException {
-
-            final Class<ConstructorProperties> propertyNamesClass = ConstructorProperties.class;
-
-            Class targetClass = getTargetClass();
-            Constructor<?>[] constrs = targetClass.getConstructors();
-
-            // Applicable if and only if there are any annotated constructors
-            List<Constructor<?>> annotatedConstrList = newList();
-            for (Constructor<?> constr : constrs) {
-                if (Modifier.isPublic(constr.getModifiers())
-                        && constr.getAnnotation(propertyNamesClass) != null)
-                    annotatedConstrList.add(constr);
-            }
-
-            if (annotatedConstrList.isEmpty())
-                return "no constructor has @ConstructorProperties annotation";
-
-            annotatedConstructors = newList();
-
-            // Now check that all the annotated constructors are valid
-            // and throw an exception if not.
-
-            // First link the itemNames to their getter indexes.
-            Map<String, Integer> getterMap = newMap();
-            String[] itemNames = getItemNames();
-            for (int i = 0; i < itemNames.length; i++)
-                getterMap.put(itemNames[i], i);
-
-            // Run through the constructors making the checks in the spec.
-            // For each constructor, remember the correspondence between its
-            // parameters and the items.  The int[] for a constructor says
-            // what parameter index should get what item.  For example,
-            // if element 0 is 2 then that means that item 0 in the
-            // CompositeData goes to parameter 2 of the constructor.  If an
-            // element is -1, that item isn't given to the constructor.
-            // Also remember the set of properties in that constructor
-            // so we can test unambiguity.
-            Set<BitSet> getterIndexSets = newSet();
-            for (Constructor<?> constr : annotatedConstrList) {
-                String[] propertyNames =
-                    constr.getAnnotation(propertyNamesClass).value();
-
-                Type[] paramTypes = constr.getGenericParameterTypes();
-                if (paramTypes.length != propertyNames.length) {
-                    final String msg =
-                        "Number of constructor params does not match " +
-                        "@ConstructorProperties annotation: " + constr;
-                    throw new InvalidObjectException(msg);
-                }
-
-                int[] paramIndexes = new int[getters.length];
-                for (int i = 0; i < getters.length; i++)
-                    paramIndexes[i] = -1;
-                BitSet present = new BitSet();
-
-                for (int i = 0; i < propertyNames.length; i++) {
-                    String propertyName = propertyNames[i];
-                    if (!getterMap.containsKey(propertyName)) {
-                        final String msg =
-                            "@ConstructorProperties includes name " + propertyName +
-                            " which does not correspond to a property: " +
-                            constr;
-                        throw new InvalidObjectException(msg);
-                    }
-                    int getterIndex = getterMap.get(propertyName);
-                    paramIndexes[getterIndex] = i;
-                    if (present.get(getterIndex)) {
-                        final String msg =
-                            "@ConstructorProperties contains property " +
-                            propertyName + " more than once: " + constr;
-                        throw new InvalidObjectException(msg);
-                    }
-                    present.set(getterIndex);
-                    Method getter = getters[getterIndex];
-                    Type propertyType = getter.getGenericReturnType();
-                    if (!propertyType.equals(paramTypes[i])) {
-                        final String msg =
-                            "@ConstructorProperties gives property " + propertyName +
-                            " of type " + propertyType + " for parameter " +
-                            " of type " + paramTypes[i] + ": " + constr;
-                        throw new InvalidObjectException(msg);
-                    }
-                }
-
-                if (!getterIndexSets.add(present)) {
-                    final String msg =
-                        "More than one constructor has a @ConstructorProperties " +
-                        "annotation with this set of names: " +
-                        Arrays.toString(propertyNames);
-                    throw new InvalidObjectException(msg);
-                }
-
-                Constr c = new Constr(constr, paramIndexes, present);
-                annotatedConstructors.add(c);
-            }
-
-            /* Check that no possible set of items could lead to an ambiguous
-             * choice of constructor (spec requires this check).  For any
-             * pair of constructors, their union would be the minimal
-             * ambiguous set.  If this set itself corresponds to a constructor,
-             * there is no ambiguity for that pair.  In the usual case, one
-             * of the constructors is a superset of the other so the union is
-             * just the bigger constuctor.
-             *
-             * The algorithm here is quadratic in the number of constructors
-             * with a @ConstructorProperties annotation.  Typically this corresponds
-             * to the number of versions of the class there have been.  Ten
-             * would already be a large number, so although it's probably
-             * possible to have an O(n lg n) algorithm it wouldn't be
-             * worth the complexity.
-             */
-            for (BitSet a : getterIndexSets) {
-                boolean seen = false;
-                for (BitSet b : getterIndexSets) {
-                    if (a == b)
-                        seen = true;
-                    else if (seen) {
-                        BitSet u = new BitSet();
-                        u.or(a); u.or(b);
-                        if (!getterIndexSets.contains(u)) {
-                            Set<String> names = new TreeSet<String>();
-                            for (int i = u.nextSetBit(0); i >= 0;
-                                 i = u.nextSetBit(i+1))
-                                names.add(itemNames[i]);
-                            final String msg =
-                                "Constructors with @ConstructorProperties annotation " +
-                                " would be ambiguous for these items: " +
-                                names;
-                            throw new InvalidObjectException(msg);
-                        }
-                    }
-                }
-            }
-
-            return null; // success!
-        }
-
-        Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                 String[] itemNames,
-                                 OpenConverter[] converters)
-                throws InvalidObjectException {
-            // The CompositeData might come from an earlier version where
-            // not all the items were present.  We look for a constructor
-            // that accepts just the items that are present.  Because of
-            // the ambiguity check in applicable(), we know there must be
-            // at most one maximally applicable constructor.
-            CompositeType ct = cd.getCompositeType();
-            BitSet present = new BitSet();
-            for (int i = 0; i < itemNames.length; i++) {
-                if (ct.getType(itemNames[i]) != null)
-                    present.set(i);
-            }
-
-            Constr max = null;
-            for (Constr constr : annotatedConstructors) {
-                if (subset(constr.presentParams, present) &&
-                        (max == null ||
-                         subset(max.presentParams, constr.presentParams)))
-                    max = constr;
-            }
-
-            if (max == null) {
-                final String msg =
-                    "No constructor has a @ConstructorProperties for this set of " +
-                    "items: " + ct.keySet();
-                throw new InvalidObjectException(msg);
-            }
-
-            Object[] params = new Object[max.presentParams.cardinality()];
-            for (int i = 0; i < itemNames.length; i++) {
-                if (!max.presentParams.get(i))
-                    continue;
-                Object openItem = cd.get(itemNames[i]);
-                Object javaItem = converters[i].fromOpenValue(lookup, openItem);
-                int index = max.paramIndexes[i];
-                if (index >= 0)
-                    params[index] = javaItem;
-            }
-
-            try {
-                return max.constructor.newInstance(params);
-            } catch (Exception e) {
-                final String msg =
-                    "Exception constructing " + getTargetClass().getName();
-                throw invalidObjectException(msg, e);
-            }
-        }
-
-        private static boolean subset(BitSet sub, BitSet sup) {
-            BitSet subcopy = (BitSet) sub.clone();
-            subcopy.andNot(sup);
-            return subcopy.isEmpty();
-        }
-
-        private static class Constr {
-            final Constructor<?> constructor;
-            final int[] paramIndexes;
-            final BitSet presentParams;
-            Constr(Constructor<?> constructor, int[] paramIndexes,
-                   BitSet presentParams) {
-                this.constructor = constructor;
-                this.paramIndexes = paramIndexes;
-                this.presentParams = presentParams;
-            }
-        }
-
-        private List<Constr> annotatedConstructors;
-    }
-
-    /** Builder for when the target class is an interface and contains
-        no methods other than getters.  Then we can make an instance
-        using a dynamic proxy that forwards the getters to the source
-        CompositeData.  */
-    private static final class CompositeBuilderViaProxy
-            extends CompositeBuilder {
-
-        CompositeBuilderViaProxy(Class targetClass, String[] itemNames) {
-            super(targetClass, itemNames);
-        }
-
-        String applicable(Method[] getters) {
-            Class targetClass = getTargetClass();
-            if (!targetClass.isInterface())
-                return "not an interface";
-            Set<Method> methods =
-                newSet(Arrays.asList(targetClass.getMethods()));
-            methods.removeAll(Arrays.asList(getters));
-            /* If the interface has any methods left over, they better be
-             * public methods that are already present in java.lang.Object.
-             */
-            String bad = null;
-            for (Method m : methods) {
-                String mname = m.getName();
-                Class[] mparams = m.getParameterTypes();
-                try {
-                    Method om = Object.class.getMethod(mname, mparams);
-                    if (!Modifier.isPublic(om.getModifiers()))
-                        bad = mname;
-                } catch (NoSuchMethodException e) {
-                    bad = mname;
-                }
-                /* We don't catch SecurityException since it shouldn't
-                 * happen for a method in Object and if it does we would
-                 * like to know about it rather than mysteriously complaining.
-                 */
-            }
-            if (bad != null)
-                return "contains methods other than getters (" + bad + ")";
-            return null; // success!
-        }
-
-        final Object fromCompositeData(MXBeanLookup lookup, CompositeData cd,
-                                 String[] itemNames,
-                                 OpenConverter[] converters) {
-            final Class targetClass = getTargetClass();
-            return
-                Proxy.newProxyInstance(targetClass.getClassLoader(),
-                                       new Class[] {targetClass},
-                                       new CompositeDataInvocationHandler(cd));
-        }
-    }
-
-    static InvalidObjectException invalidObjectException(String msg,
-                                                         Throwable cause) {
-        return EnvHelp.initCause(new InvalidObjectException(msg), cause);
-    }
-
-    static InvalidObjectException invalidObjectException(Throwable cause) {
-        return invalidObjectException(cause.getMessage(), cause);
-    }
-
-    static OpenDataException openDataException(String msg, Throwable cause) {
-        return EnvHelp.initCause(new OpenDataException(msg), cause);
-    }
-
-    static OpenDataException openDataException(Throwable cause) {
-        return openDataException(cause.getMessage(), cause);
-    }
-
-    static void mustBeComparable(Class collection, Type element)
-            throws OpenDataException {
-        if (!(element instanceof Class)
-            || !Comparable.class.isAssignableFrom((Class<?>) element)) {
-            final String msg =
-                "Parameter class " + element + " of " +
-                collection.getName() + " does not implement " +
-                Comparable.class.getName();
-            throw new OpenDataException(msg);
-        }
-    }
-
-    /**
-     * Utility method to take a string and convert it to normal Java variable
-     * name capitalization.  This normally means converting the first
-     * character from upper case to lower case, but in the (unusual) special
-     * case when there is more than one character and both the first and
-     * second characters are upper case, we leave it alone.
-     * <p>
-     * Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays
-     * as "URL".
-     *
-     * @param  name The string to be decapitalized.
-     * @return  The decapitalized version of the string.
-     */
-    public static String decapitalize(String name) {
-        if (name == null || name.length() == 0) {
-            return name;
-        }
-        int offset1 = Character.offsetByCodePoints(name, 0, 1);
-        // Should be name.offsetByCodePoints but 6242664 makes this fail
-        if (offset1 < name.length() &&
-                Character.isUpperCase(name.codePointAt(offset1)))
-            return name;
-        return name.substring(0, offset1).toLowerCase() +
-               name.substring(offset1);
-    }
-
-    /**
-     * Reverse operation for java.beans.Introspector.decapitalize.  For any s,
-     * capitalize(decapitalize(s)).equals(s).  The reverse is not true:
-     * e.g. capitalize("uRL") produces "URL" which is unchanged by
-     * decapitalize.
-     */
-    static String capitalize(String name) {
-        if (name == null || name.length() == 0)
-            return name;
-        int offset1 = name.offsetByCodePoints(0, 1);
-        return name.substring(0, offset1).toUpperCase() +
-               name.substring(offset1);
-    }
-
-    public static String propertyName(Method m) {
-        String rest = null;
-        String name = m.getName();
-        if (name.startsWith("get"))
-            rest = name.substring(3);
-        else if (name.startsWith("is") && m.getReturnType() == boolean.class)
-            rest = name.substring(2);
-        if (rest == null || rest.length() == 0
-            || m.getParameterTypes().length > 0
-            || m.getReturnType() == void.class
-            || name.equals("getClass"))
-            return null;
-        return rest;
-    }
-
-    private final static Map<Type, Type> inProgress = newIdentityHashMap();
-    // really an IdentityHashSet but that doesn't exist
-}
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/PerInterface.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/PerInterface.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -231,7 +231,7 @@
     /**
      * Visitor that sets up the method maps (operations, getters, setters).
      */
-    private class InitMaps implements MBeanAnalyzer.MBeanVisitor<M> {
+    private class InitMaps implements MBeanAnalyzer.MBeanVisitor<M, RuntimeException> {
         public void visitAttribute(String attributeName,
                                    M getter,
                                    M setter) {
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Repository.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Repository.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/mbeanserver/StandardMBeanSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/StandardMBeanSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,14 +25,13 @@
 
 package com.sun.jmx.mbeanserver;
 
-import static com.sun.jmx.mbeanserver.Util.*;
-
 import java.lang.reflect.Method;
 
 import javax.management.MBeanInfo;
 import javax.management.MBeanServer;
 import javax.management.NotCompliantMBeanException;
 import javax.management.ObjectName;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
  * Base class for Standard MBeans.
@@ -61,11 +60,11 @@
     */
     public <T> StandardMBeanSupport(T resource, Class<T> mbeanInterface)
             throws NotCompliantMBeanException {
-        super(resource, mbeanInterface);
+        super(resource, mbeanInterface, (MXBeanMappingFactory) null);
     }
 
     @Override
-    MBeanIntrospector<Method> getMBeanIntrospector() {
+    MBeanIntrospector<Method> getMBeanIntrospector(MXBeanMappingFactory ignored) {
         return StandardMBeanIntrospector.getInstance();
     }
 
--- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Util.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/FileLoginModule.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/JMXPluggableAuthenticator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/management/HotSpotDiagnosticMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/security/auth/login/ConfigFile.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpec.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpec.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpecList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/EventRequestSpecList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ExecutionManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ExecutionManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/JDIEventSource.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/JDIEventSource.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/LineBreakpointSpec.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/LineBreakpointSpec.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/MethodBreakpointSpec.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ThreadGroupIterator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ThreadGroupIterator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ThreadIterator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/bdi/ThreadIterator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/expr/LValue.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/expr/LValue.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/ClassTreeTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/ClassTreeTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/src/share/classes/com/sun/tools/example/debug/gui/JDBFileFilter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/JDBFileFilter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/LaunchTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/LaunchTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/SearchPath.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/SearchPath.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/SourceManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/SourceManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/SourceModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/SourceModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/StackTraceTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/StackTraceTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/gui/ThreadTreeTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/gui/ThreadTreeTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/BreakpointSpec.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/BreakpointSpec.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/Commands.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/Commands.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/Env.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/Env.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpec.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpec.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpecList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/EventRequestSpecList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/SourceMapper.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/SourceMapper.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTY.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/TTY.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadGroupIterator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadGroupIterator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadIterator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/ThreadIterator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/example/debug/tty/VMConnection.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/example/debug/tty/VMConnection.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/build.xml	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/build.xml	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- 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/jdk/src/share/classes/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/AbstractJavaHeapObjectVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/ArrayTypeCodes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/ArrayTypeCodes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/HackJavaValue.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/HackJavaValue.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaBoolean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaBoolean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaByte.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaByte.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaChar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaChar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaClass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaDouble.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaDouble.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaField.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaField.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaFloat.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaFloat.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaHeapObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaHeapObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaHeapObjectVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaHeapObjectVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaInt.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaInt.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaLazyReadObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaLazyReadObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaLong.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaLong.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObjectArray.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObjectArray.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObjectRef.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaObjectRef.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaShort.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaShort.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaStatic.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaStatic.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaThing.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaThing.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaValue.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaValue.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaValueArray.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/JavaValueArray.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableExcludes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableExcludes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableExcludesImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableExcludesImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableObjects.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReachableObjects.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReferenceChain.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/ReferenceChain.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/Root.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/Root.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/Snapshot.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/Snapshot.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/StackFrame.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/StackFrame.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/model/StackTrace.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/model/StackTrace.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLEngine.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLEngine.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLException.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLException.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/oql/OQLQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/oql/ObjectVisitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/oql/ObjectVisitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/FileReadBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/FileReadBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/HprofReader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/HprofReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/MappedReadBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/MappedReadBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/PositionDataInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/PositionDataInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/PositionInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/PositionInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/ReadBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/ReadBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/parser/Reader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/parser/Reader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllRootsQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/AllRootsQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/ClassQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/FinalizerObjectsQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/FinalizerObjectsQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/FinalizerSummaryQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/FinalizerSummaryQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/HistogramQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/HistogramQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/HttpReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesCountQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/InstancesQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLHelp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/OQLQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/ObjectQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/ObjectQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/PlatformClasses.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/PlatformClasses.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryListener.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/QueryListener.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/ReachableQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/ReachableQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/RefsByTypeQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/RootStackQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/RootStackQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/server/RootsQuery.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/server/RootsQuery.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/util/ArraySorter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/util/ArraySorter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/util/Comparer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/util/Comparer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/util/CompositeEnumeration.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/util/CompositeEnumeration.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/util/Misc.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/util/Misc.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/internal/util/VectorSorter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/internal/util/VectorSorter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/hat/resources/hat.js	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/hat/resources/hat.js	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/AbstractLauncher.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/AbstractLauncher.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/jdk/src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/ClassTypeImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/ConcreteMethodImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/EventSetImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/EventSetImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/JNITypeParser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/JNITypeParser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/MethodImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/MethodImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/ObjectReferenceImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/PacketStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/PacketStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/ReferenceTypeImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/SDE.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/SDE.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/StackFrameImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/StackFrameImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/TargetVM.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/TargetVM.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/ThreadGroupReferenceImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineManagerImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/com/sun/tools/jdi/VirtualMachineManagerImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/Button.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/Button.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/awt/Color.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/Color.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/awt/Container.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/Container.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/Font.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/Font.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/awt/GradientPaint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/GradientPaint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/KeyboardFocusManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/LinearGradientPaint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/LinearGradientPaint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/java/awt/MenuItem.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/MenuItem.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/awt/Paint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/Paint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/RadialGradientPaint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/RadialGradientPaint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/TexturePaint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/TexturePaint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/color/ColorSpace.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/color/ColorSpace.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/color/ICC_ColorSpace.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/color/ICC_ColorSpace.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/color/ICC_Profile.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/color/ICC_ProfileGray.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/color/ICC_ProfileGray.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/color/ICC_ProfileRGB.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/color/ICC_ProfileRGB.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/dnd/DropTargetEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/AdjustmentEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/AdjustmentEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/ComponentEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/ComponentEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/ContainerEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/ContainerEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/FocusEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/FocusEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/InputEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/InputEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/ItemEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/ItemEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/MouseEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/MouseEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/PaintEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/PaintEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/event/WindowEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/event/WindowEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/font/OpenType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/font/OpenType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1997-1999 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/jdk/src/share/classes/java/awt/image/BandedSampleModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/BandedSampleModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/BufferedImage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/BufferedImage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/ColorConvertOp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/ColorConvertOp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/ComponentSampleModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/ComponentSampleModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/DataBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/DataBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/DataBufferByte.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/DataBufferByte.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/DataBufferInt.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/DataBufferInt.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/DataBufferShort.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/DataBufferShort.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/DataBufferUShort.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/DataBufferUShort.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/MultiPixelPackedSampleModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/Raster.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/Raster.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/RenderedImage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/RenderedImage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2000 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/jdk/src/share/classes/java/awt/image/SampleModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/SampleModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2001 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/jdk/src/share/classes/java/awt/image/WritableRaster.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/WritableRaster.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/awt/image/WritableRenderedImage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/WritableRenderedImage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1997-2000 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/jdk/src/share/classes/java/awt/image/renderable/ContextualRenderedImageFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/ContextualRenderedImageFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/awt/image/renderable/RenderContext.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/RenderContext.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/awt/image/renderable/RenderableImage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/RenderableImage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/awt/image/renderable/RenderableImageOp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/RenderableImageOp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998-2000 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/awt/image/renderable/RenderableImageProducer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/RenderableImageProducer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/awt/image/renderable/RenderedImageFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/awt/image/renderable/RenderedImageFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1998 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/java/beans/EventHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/beans/EventHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -636,7 +636,7 @@
      * time a mouse button is pressed, one would write:
      *<blockquote>
      *<pre>
-     *EventHandler.create(MouseListener.class, "mousePressed", target, "origin", "point");
+     *EventHandler.create(MouseListener.class, target, "origin", "point", "mousePressed");
      *</pre>
      *</blockquote>
      *
--- a/jdk/src/share/classes/java/io/File.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/io/File.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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 java.io;
 
+import java.beans.ConstructorProperties;
 import java.net.URI;
 import java.net.URL;
 import java.net.MalformedURLException;
@@ -234,6 +235,7 @@
      * @throws  NullPointerException
      *          If the <code>pathname</code> argument is <code>null</code>
      */
+    @ConstructorProperties("path")
     public File(String pathname) {
         if (pathname == null) {
             throw new NullPointerException();
--- a/jdk/src/share/classes/java/io/FileInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/io/FileInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/io/FileOutputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/io/FileOutputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/io/ObjectInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/io/ObjectInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/java/io/ObjectStreamClass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/io/ObjectStreamClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/java/lang/Class.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/Class.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/lang/ClassLoader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/ClassLoader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/lang/Compiler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/Compiler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/lang/Long.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/Long.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/lang/Package.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/Package.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/Process.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/Process.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/lang/StringCoding.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/StringCoding.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/instrument/Instrumentation.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/instrument/Instrumentation.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/ClassLoadingMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/CompilationMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/CompilationMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/GarbageCollectorMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/ManagementFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/MemoryMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/MemoryMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/MemoryManagerMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/MemoryPoolMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/OperatingSystemMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/RuntimeMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/RuntimeMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/ThreadInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/ThreadInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/management/ThreadMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/management/ThreadMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/ref/Finalizer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/ref/Finalizer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/AccessibleObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/lang/reflect/Modifier.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Modifier.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 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/jdk/src/share/classes/java/lang/reflect/Proxy.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/lang/reflect/Proxy.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/AbstractPlainSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/net/CookieHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/CookieHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -43,7 +43,7 @@
  * CookieHandler.getDefault().
  *
  * For more information on HTTP state management, see <a
- * href="http://www.ietf.org/rfc/rfc2965.txt""><i>RFC&nbsp;2965: HTTP
+ * href="http://www.ietf.org/rfc/rfc2965.txt"><i>RFC&nbsp;2965: HTTP
  * State Management Mechanism</i></a>
  *
  * @author Yingxian Wang
--- a/jdk/src/share/classes/java/net/CookieManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/CookieManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/DatagramSocket.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/DatagramSocket.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/net/HttpCookie.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/HttpCookie.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/InterfaceAddress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/InterfaceAddress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/NetworkInterface.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/NetworkInterface.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/ResponseCache.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/ResponseCache.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -52,7 +52,7 @@
  * protocol is allowed to use a cached response.
  *
  * For more information on HTTP caching, see <a
- * href="http://www.ietf.org/rfc/rfc2616.txt""><i>RFC&nbsp;2616: Hypertext
+ * href="http://www.ietf.org/rfc/rfc2616.txt"><i>RFC&nbsp;2616: Hypertext
  * Transfer Protocol -- HTTP/1.1</i></a>
  *
  * @author Yingxian Wang
--- a/jdk/src/share/classes/java/net/ServerSocket.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/ServerSocket.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/net/SocksSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/SocksSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/URI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/URI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -49,7 +49,7 @@
  *
  * <p> Aside from some minor deviations noted below, an instance of this
  * class represents a URI reference as defined by
- * <a href="http://www.ietf.org/rfc/rfc2396.txt""><i>RFC&nbsp;2396: Uniform
+ * <a href="http://www.ietf.org/rfc/rfc2396.txt"><i>RFC&nbsp;2396: Uniform
  * Resource Identifiers (URI): Generic Syntax</i></a>, amended by <a
  * href="http://www.ietf.org/rfc/rfc2732.txt"><i>RFC&nbsp;2732: Format for
  * Literal IPv6 Addresses in URLs</i></a>. The Literal IPv6 address format
@@ -461,7 +461,7 @@
  * transformation format of ISO 10646</i></a>, <br><a
  * href="http://www.ietf.org/rfc/rfc2373.txt"><i>RFC&nbsp;2373: IPv6 Addressing
  * Architecture</i></a>, <br><a
- * href="http://www.ietf.org/rfc/rfc2396.txt""><i>RFC&nbsp;2396: Uniform
+ * href="http://www.ietf.org/rfc/rfc2396.txt"><i>RFC&nbsp;2396: Uniform
  * Resource Identifiers (URI): Generic Syntax</i></a>, <br><a
  * href="http://www.ietf.org/rfc/rfc2732.txt"><i>RFC&nbsp;2732: Format for
  * Literal IPv6 Addresses in URLs</i></a>, <br><a
--- a/jdk/src/share/classes/java/net/URL.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/URL.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -66,7 +66,7 @@
  * </pre></blockquote>
  * <p>
  * The syntax of <code>URL</code> is defined by  <a
- * href="http://www.ietf.org/rfc/rfc2396.txt""><i>RFC&nbsp;2396: Uniform
+ * href="http://www.ietf.org/rfc/rfc2396.txt"><i>RFC&nbsp;2396: Uniform
  * Resource Identifiers (URI): Generic Syntax</i></a>, amended by <a
  * href="http://www.ietf.org/rfc/rfc2732.txt"><i>RFC&nbsp;2732: Format for
  * Literal IPv6 Addresses in URLs</i></a>. The Literal IPv6 address format
--- a/jdk/src/share/classes/java/net/URLClassLoader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/URLClassLoader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/net/URLConnection.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/net/URLConnection.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/nio/StringCharBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/nio/StringCharBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/nio/channels/Channels.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/nio/channels/Channels.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/nio/channels/spi/SelectorProvider.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/nio/channels/spi/SelectorProvider.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/nio/charset/Charset.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/nio/charset/Charset.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/rmi/activation/ActivationGroupDesc.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/rmi/activation/ActivationGroupDesc.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/rmi/dgc/VMID.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/rmi/dgc/VMID.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 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/jdk/src/share/classes/java/security/BasicPermission.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/security/BasicPermission.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/security/KeyStore.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/security/KeyStore.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/security/cert/TrustAnchor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/security/cert/TrustAnchor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/security/cert/X509CertSelector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/security/cert/X509CertSelector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/text/DictionaryBasedBreakIterator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/text/DictionaryBasedBreakIterator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/text/MessageFormat.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/text/MessageFormat.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/java/util/ArrayList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/ArrayList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/Arrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/Arrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/EnumMap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/EnumMap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/HashMap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/HashMap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/Hashtable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/Hashtable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/util/JumboEnumSet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/JumboEnumSet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/Random.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/Random.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/util/TreeSet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/TreeSet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/Vector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/Vector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/java/util/WeakHashMap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/WeakHashMap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/logging/Logging.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/logging/Logging.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/logging/LoggingMXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/logging/LoggingMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/prefs/AbstractPreferences.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/prefs/Preferences.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/prefs/Preferences.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/regex/Matcher.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/regex/Matcher.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/java/util/regex/Pattern.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/java/util/regex/Pattern.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/imageio/stream/ImageInputStreamImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/AndQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/AndQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/jdk/src/share/classes/javax/management/AttributeValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/AttributeValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/jdk/src/share/classes/javax/management/BetweenQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/BetweenQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/BinaryOpValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/BinaryOpValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/BinaryRelQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/BinaryRelQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/BooleanValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/BooleanValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/InQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/InQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/JMX.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/JMX.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -26,8 +26,17 @@
 package javax.management;
 
 import com.sun.jmx.mbeanserver.Introspector;
+import com.sun.jmx.remote.util.ClassLogger;
+import java.beans.BeanInfo;
+import java.beans.PropertyDescriptor;
+import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
+import java.util.Map;
+import java.util.TreeMap;
+import javax.management.openmbean.MXBeanMappingFactory;
 
 /**
  * Static methods from the JMX API.  There are no instances of this class.
@@ -39,6 +48,8 @@
      * this class.
      */
     static final JMX proof = new JMX();
+    private static final ClassLogger logger =
+        new ClassLogger("javax.management.misc", "JMX");
 
     private JMX() {}
 
@@ -85,6 +96,14 @@
     public static final String MXBEAN_FIELD = "mxbean";
 
     /**
+     * The name of the
+     * <a href="Descriptor.html#mxbeanMappingFactoryClass">{@code
+     * mxbeanMappingFactoryClass}</a> field.
+     */
+    public static final String MXBEAN_MAPPING_FACTORY_CLASS_FIELD =
+            "mxbeanMappingFactoryClass";
+
+    /**
      * The name of the <a href="Descriptor.html#openType">{@code
      * openType}</a> field.
      */
@@ -97,6 +116,264 @@
     public static final String ORIGINAL_TYPE_FIELD = "originalType";
 
     /**
+     * <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>
+     *
+     * <pre>
+     * MXBeanMappingFactory factory = new MyMXBeanMappingFactory();
+     * JMX.MBeanOptions opts = new JMX.MBeanOptions();
+     * opts.setMXBeanMappingFactory(factory);
+     * StandardMBean mbean = new StandardMBean(impl, intf, opts);
+     * </pre>
+     *
+     * @see javax.management.JMX.ProxyOptions
+     */
+    public static class MBeanOptions implements Serializable, Cloneable {
+        private static final long serialVersionUID = -6380842449318177843L;
+
+        static final MBeanOptions MXBEAN = new MBeanOptions();
+        static {
+            MXBEAN.setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+        }
+
+        private MXBeanMappingFactory mappingFactory;
+
+        /**
+         * <p>Construct an {@code MBeanOptions} object where all options have
+         * their default values.</p>
+         */
+        public MBeanOptions() {}
+
+        @Override
+        public MBeanOptions clone() {
+            try {
+                return (MBeanOptions) super.clone();
+            } catch (CloneNotSupportedException e) {
+                throw new AssertionError(e);
+            }
+        }
+
+        /**
+         * <p>True if this is an MXBean proxy or a StandardMBean instance
+         * that is an MXBean.  The default value is false.</p>
+         *
+         * <p>This method is equivalent to {@link #getMXBeanMappingFactory()
+         * this.getMXBeanMappingFactory()}{@code != null}.</p>
+         *
+         * @return true if this is an MXBean proxy or a StandardMBean instance
+         * that is an MXBean.
+         */
+        public boolean isMXBean() {
+            return (this.mappingFactory != null);
+        }
+
+        /**
+         * <p>The mappings between Java types and Open Types to be used in
+         * an MXBean proxy or a StandardMBean instance that is an MXBean,
+         * or null if this instance is not for an MXBean.
+         * The default value is null.</p>
+         *
+         * @return the mappings to be used in this proxy or StandardMBean,
+         * or null if this instance is not for an MXBean.
+         */
+        public MXBeanMappingFactory getMXBeanMappingFactory() {
+            return mappingFactory;
+        }
+
+        /**
+         * <p>Set the {@link #getMXBeanMappingFactory() MXBeanMappingFactory} to
+         * the given value.  The value should be null if this instance is not
+         * for an MXBean.  If this instance is for an MXBean, the value should
+         * usually be either a custom mapping factory, or
+         * {@link MXBeanMappingFactory#forInterface
+         * MXBeanMappingFactory.forInterface}{@code (mxbeanInterface)}
+         * which signifies
+         * that the {@linkplain MXBeanMappingFactory#DEFAULT default} mapping
+         * factory should be used unless an {@code @}{@link
+         * javax.management.openmbean.MXBeanMappingFactoryClass
+         * MXBeanMappingFactoryClass} annotation on {@code mxbeanInterface}
+         * specifies otherwise.</p>
+         *
+         * <p>Examples:</p>
+         * <pre>
+         * MBeanOptions opts = new MBeanOptions();
+         * opts.setMXBeanMappingFactory(myMappingFactory);
+         * MyMXBean proxy = JMX.newMBeanProxy(
+         *         mbeanServerConnection, objectName, MyMXBean.class, opts);
+         *
+         * // ...or...
+         *
+         * MBeanOptions opts = new MBeanOptions();
+         * MXBeanMappingFactory defaultFactoryForMyMXBean =
+         *         MXBeanMappingFactory.forInterface(MyMXBean.class);
+         * opts.setMXBeanMappingFactory(defaultFactoryForMyMXBean);
+         * MyMXBean proxy = JMX.newMBeanProxy(
+         *         mbeanServerConnection, objectName, MyMXBean.class, opts);
+         * </pre>
+         *
+         * @param f the new value.  If null, this instance is not for an
+         * MXBean.
+         */
+        public void setMXBeanMappingFactory(MXBeanMappingFactory f) {
+            this.mappingFactory = f;
+        }
+
+        /* To maximise object sharing, classes in this package can replace
+         * a private MBeanOptions with no MXBeanMappingFactory with one
+         * of these shared instances.  But they must be EXTREMELY careful
+         * never to give out the shared instances to user code, which could
+         * modify them.
+         */
+        private static final MBeanOptions[] CANONICALS = {
+            new MBeanOptions(), MXBEAN,
+        };
+        // Overridden in local subclasses:
+        MBeanOptions[] canonicals() {
+            return CANONICALS;
+        }
+
+        // This is only used by the logic for canonical instances.
+        // Overridden in local subclasses:
+        boolean same(MBeanOptions opt) {
+            return (opt.mappingFactory == mappingFactory);
+        }
+
+        final MBeanOptions canonical() {
+            for (MBeanOptions opt : canonicals()) {
+                if (opt.getClass() == this.getClass() && same(opt))
+                    return opt;
+            }
+            return this;
+        }
+
+        final MBeanOptions uncanonical() {
+            for (MBeanOptions opt : canonicals()) {
+                if (this == opt)
+                    return clone();
+            }
+            return this;
+        }
+
+        private Map<String, Object> toMap() {
+            Map<String, Object> map = new TreeMap<String, Object>();
+            try {
+                BeanInfo bi = java.beans.Introspector.getBeanInfo(getClass());
+                PropertyDescriptor[] pds = bi.getPropertyDescriptors();
+                for (PropertyDescriptor pd : pds) {
+                    String name = pd.getName();
+                    if (name.equals("class"))
+                        continue;
+                    Method get = pd.getReadMethod();
+                    if (get != null)
+                        map.put(name, get.invoke(this));
+                }
+            } catch (Exception e) {
+                Throwable t = e;
+                if (t instanceof InvocationTargetException)
+                    t = t.getCause();
+                map.put("Exception", t);
+            }
+            return map;
+        }
+
+        @Override
+        public String toString() {
+            return getClass().getSimpleName() + toMap();
+            // For example "MBeanOptions{MXBean=true, <etc>}".
+        }
+
+        /**
+         * <p>Indicates whether some other object is "equal to" this one. The
+         * result is true if and only if the other object is also an instance
+         * of MBeanOptions or a subclass, and has the same properties with
+         * the same values.</p>
+         * @return {@inheritDoc}
+         */
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == this)
+                return true;
+            if (obj == null || obj.getClass() != this.getClass())
+                return false;
+            return toMap().equals(((MBeanOptions) obj).toMap());
+        }
+
+        @Override
+        public int hashCode() {
+            return toMap().hashCode();
+        }
+    }
+
+    /**
+     * <p>Options to apply to an MBean proxy.</p>
+     *
+     * @see #newMBeanProxy
+     */
+    public static class ProxyOptions extends MBeanOptions {
+        private static final long serialVersionUID = 7238804866098386559L;
+
+        private boolean notificationEmitter;
+
+        /**
+         * <p>Construct a {@code ProxyOptions} object where all options have
+         * their default values.</p>
+         */
+        public ProxyOptions() {}
+
+        @Override
+        public ProxyOptions clone() {
+            return (ProxyOptions) super.clone();
+        }
+
+        /**
+         * <p>Defines whether the returned proxy should
+         * implement {@link NotificationEmitter}.  The default value is false.</p>
+         *
+         * @return true if this proxy will be a NotificationEmitter.
+         *
+         * @see JMX#newMBeanProxy(MBeanServerConnection, ObjectName, Class,
+         * MBeanOptions)
+         */
+        public boolean isNotificationEmitter() {
+            return this.notificationEmitter;
+        }
+
+        /**
+         * <p>Set the {@link #isNotificationEmitter NotificationEmitter} option to
+         * the given value.</p>
+         * @param emitter the new value.
+         */
+        public void setNotificationEmitter(boolean emitter) {
+            this.notificationEmitter = emitter;
+        }
+
+        // Canonical objects for each of (MXBean,!MXBean) x (Emitter,!Emitter)
+        private static final ProxyOptions[] CANONICALS = {
+            new ProxyOptions(), new ProxyOptions(),
+            new ProxyOptions(), new ProxyOptions(),
+        };
+        static {
+            CANONICALS[1].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+            CANONICALS[2].setNotificationEmitter(true);
+            CANONICALS[3].setMXBeanMappingFactory(MXBeanMappingFactory.DEFAULT);
+            CANONICALS[3].setNotificationEmitter(true);
+        }
+        @Override
+        MBeanOptions[] canonicals() {
+            return CANONICALS;
+        }
+
+        @Override
+        boolean same(MBeanOptions opt) {
+            return (super.same(opt) && opt instanceof ProxyOptions &&
+                    ((ProxyOptions) opt).notificationEmitter == notificationEmitter);
+        }
+    }
+
+    /**
      * <p>Make a proxy for a Standard MBean in a local or remote
      * MBean Server.</p>
      *
@@ -172,7 +449,7 @@
      *
      * <p>This method behaves the same as {@link
      * #newMBeanProxy(MBeanServerConnection, ObjectName, Class)}, but
-     * additionally, if {@code notificationBroadcaster} is {@code
+     * additionally, if {@code notificationEmitter} is {@code
      * true}, then the MBean is assumed to be a {@link
      * NotificationBroadcaster} or {@link NotificationEmitter} and the
      * returned proxy will implement {@link NotificationEmitter} as
@@ -189,25 +466,21 @@
      * {@code connection} to forward to.
      * @param interfaceClass the management interface that the MBean
      * exports, which will also be implemented by the returned proxy.
-     * @param notificationBroadcaster make the returned proxy
+     * @param notificationEmitter make the returned proxy
      * implement {@link NotificationEmitter} by forwarding its methods
      * via {@code connection}.
-     *
      * @param <T> allows the compiler to know that if the {@code
      * interfaceClass} parameter is {@code MyMBean.class}, for
      * example, then the return type is {@code MyMBean}.
-     *
      * @return the new proxy instance.
      */
     public static <T> T newMBeanProxy(MBeanServerConnection connection,
                                       ObjectName objectName,
                                       Class<T> interfaceClass,
-                                      boolean notificationBroadcaster) {
-        return MBeanServerInvocationHandler.newProxyInstance(
-                connection,
-                objectName,
-                interfaceClass,
-                notificationBroadcaster);
+                                      boolean notificationEmitter) {
+        ProxyOptions opts = new ProxyOptions();
+        opts.setNotificationEmitter(notificationEmitter);
+        return newMBeanProxy(connection, objectName, interfaceClass, opts);
     }
 
     /**
@@ -314,7 +587,7 @@
      *
      * <p>This method behaves the same as {@link
      * #newMXBeanProxy(MBeanServerConnection, ObjectName, Class)}, but
-     * additionally, if {@code notificationBroadcaster} is {@code
+     * additionally, if {@code notificationEmitter} is {@code
      * true}, then the MXBean is assumed to be a {@link
      * NotificationBroadcaster} or {@link NotificationEmitter} and the
      * returned proxy will implement {@link NotificationEmitter} as
@@ -331,31 +604,105 @@
      * {@code connection} to forward to.
      * @param interfaceClass the MXBean interface,
      * which will also be implemented by the returned proxy.
-     * @param notificationBroadcaster make the returned proxy
+     * @param notificationEmitter make the returned proxy
      * implement {@link NotificationEmitter} by forwarding its methods
      * via {@code connection}.
-     *
      * @param <T> allows the compiler to know that if the {@code
      * interfaceClass} parameter is {@code MyMXBean.class}, for
      * example, then the return type is {@code MyMXBean}.
-     *
      * @return the new proxy instance.
      */
     public static <T> T newMXBeanProxy(MBeanServerConnection connection,
                                        ObjectName objectName,
                                        Class<T> interfaceClass,
-                                       boolean notificationBroadcaster) {
-        // Check interface for MXBean compliance
-        //
+                                       boolean notificationEmitter) {
+        ProxyOptions opts = new ProxyOptions();
+        MXBeanMappingFactory f = MXBeanMappingFactory.forInterface(interfaceClass);
+        opts.setMXBeanMappingFactory(f);
+        opts.setNotificationEmitter(notificationEmitter);
+        return newMBeanProxy(connection, objectName, interfaceClass, opts);
+    }
+
+    /**
+     * <p>Make a proxy for a Standard MBean or MXBean in a local or remote MBean
+     * Server that may also support the methods of {@link
+     * NotificationEmitter} and (for an MXBean) that may define custom MXBean
+     * type mappings.</p>
+     *
+     * <p>This method behaves the same as
+     * {@link #newMBeanProxy(MBeanServerConnection, ObjectName, Class)} or
+     * {@link #newMXBeanProxy(MBeanServerConnection, ObjectName, Class)},
+     * according as {@code opts.isMXBean()} is respectively false or true; but
+     * with the following changes based on {@code opts}.</p>
+     *
+     * <ul>
+     *     <li>If {@code opts.isNotificationEmitter()} is {@code
+     *         true}, then the MBean is assumed to be a {@link
+     *         NotificationBroadcaster} or {@link NotificationEmitter} and the
+     *         returned proxy will implement {@link NotificationEmitter} as
+     *         well as {@code interfaceClass}.  A call to {@link
+     *         NotificationBroadcaster#addNotificationListener} on the proxy
+     *         will result in a call to {@link
+     *         MBeanServerConnection#addNotificationListener(ObjectName,
+     *         NotificationListener, NotificationFilter, Object)}, and
+     *         likewise for the other methods of {@link
+     *     NotificationBroadcaster} and {@link NotificationEmitter}.</li>
+     *
+     *     <li>If {@code opts.getMXBeanMappingFactory()} is not null,
+     *         then the mappings it defines will be applied to convert between
+     *     arbitrary Java types and Open Types.</li>
+     * </ul>
+     *
+     * @param connection the MBean server to forward to.
+     * @param objectName the name of the MBean within
+     * {@code connection} to forward to.
+     * @param interfaceClass the Standard MBean or MXBean interface,
+     * which will also be implemented by the returned proxy.
+     * @param opts the options to apply for this proxy.  Can be null,
+     * in which case default options are applied.
+     * @param <T> allows the compiler to know that if the {@code
+     * interfaceClass} parameter is {@code MyMXBean.class}, for
+     * example, then the return type is {@code MyMXBean}.
+     * @return the new proxy instance.
+     *
+     * @throws IllegalArgumentException if {@code interfaceClass} is not a
+     * valid MXBean interface.
+     */
+    public static <T> T newMBeanProxy(MBeanServerConnection connection,
+                                      ObjectName objectName,
+                                      Class<T> interfaceClass,
+                                      MBeanOptions opts) {
         try {
-            Introspector.testComplianceMXBeanInterface(interfaceClass);
+            return newMBeanProxy2(connection, objectName, interfaceClass, opts);
         } catch (NotCompliantMBeanException e) {
             throw new IllegalArgumentException(e);
         }
+    }
+
+    private static <T> T newMBeanProxy2(MBeanServerConnection connection,
+                                        ObjectName objectName,
+                                        Class<T> interfaceClass,
+                                        MBeanOptions opts)
+    throws NotCompliantMBeanException {
+
+        if (opts == null)
+            opts = new MBeanOptions();
+
+        boolean notificationEmitter = opts instanceof ProxyOptions &&
+                ((ProxyOptions) opts).isNotificationEmitter();
+
+        MXBeanMappingFactory mappingFactory = opts.getMXBeanMappingFactory();
+
+        if (mappingFactory != null) {
+            // Check interface for MXBean compliance
+            Introspector.testComplianceMXBeanInterface(interfaceClass,
+                    mappingFactory);
+        }
+
         InvocationHandler handler = new MBeanServerInvocationHandler(
-                connection, objectName, true);
+                connection, objectName, opts);
         final Class[] interfaces;
-        if (notificationBroadcaster) {
+        if (notificationEmitter) {
             interfaces =
                 new Class<?>[] {interfaceClass, NotificationEmitter.class};
         } else
--- a/jdk/src/share/classes/javax/management/MBeanServer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/MBeanServer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/MBeanServerInvocationHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -33,6 +33,9 @@
 import java.lang.reflect.Proxy;
 import java.util.Arrays;
 import java.util.WeakHashMap;
+import javax.management.openmbean.MXBeanMappingFactory;
+
+import static javax.management.JMX.MBeanOptions;
 
 /**
  * <p>{@link InvocationHandler} that forwards methods in an MBean's
@@ -111,7 +114,7 @@
     public MBeanServerInvocationHandler(MBeanServerConnection connection,
                                         ObjectName objectName) {
 
-        this(connection, objectName, false);
+        this(connection, objectName, null);
     }
 
     /**
@@ -138,6 +141,14 @@
     public MBeanServerInvocationHandler(MBeanServerConnection connection,
                                         ObjectName objectName,
                                         boolean isMXBean) {
+        this(connection, objectName, isMXBean ? MBeanOptions.MXBEAN : null);
+    }
+
+    public MBeanServerInvocationHandler(MBeanServerConnection connection,
+                                        ObjectName objectName,
+                                        MBeanOptions options) {
+        if (options == null)
+            options = new MBeanOptions();
         if (connection == null) {
             throw new IllegalArgumentException("Null connection");
         }
@@ -146,7 +157,7 @@
         }
         this.connection = connection;
         this.objectName = objectName;
-        this.isMXBean = isMXBean;
+        this.options = options.canonical();
     }
 
     /**
@@ -182,7 +193,16 @@
      * @since 1.6
      */
     public boolean isMXBean() {
-        return isMXBean;
+        return options.isMXBean();
+    }
+
+    /**
+     * <p>Return the {@link MBeanOptions} used for this proxy.</p>
+     *
+     * @return the MBeanOptions.
+     */
+    public MBeanOptions getMBeanOptions() {
+        return options.uncanonical();
     }
 
     /**
@@ -260,7 +280,7 @@
             return doLocally(proxy, method, args);
 
         try {
-            if (isMXBean) {
+            if (isMXBean()) {
                 MXBeanProxy p = findMXBeanProxy(methodClass);
                 return p.invoke(connection, objectName, method, args);
             } else {
@@ -326,21 +346,34 @@
          */
     }
 
-    private static MXBeanProxy findMXBeanProxy(Class<?> mxbeanInterface) {
+    private MXBeanProxy findMXBeanProxy(Class<?> mxbeanInterface) {
+        MXBeanMappingFactory mappingFactory = options.getMXBeanMappingFactory();
         synchronized (mxbeanProxies) {
-            WeakReference<MXBeanProxy> proxyRef =
-                    mxbeanProxies.get(mxbeanInterface);
-            MXBeanProxy p = (proxyRef == null) ? null : proxyRef.get();
-            if (p == null) {
-                p = new MXBeanProxy(mxbeanInterface);
-                mxbeanProxies.put(mxbeanInterface,
-                                  new WeakReference<MXBeanProxy>(p));
+            ClassToProxy classToProxy = mxbeanProxies.get(mappingFactory);
+            if (classToProxy == null) {
+                classToProxy = new ClassToProxy();
+                mxbeanProxies.put(mappingFactory, classToProxy);
             }
+            WeakReference<MXBeanProxy> wr = classToProxy.get(mxbeanInterface);
+            MXBeanProxy p;
+            if (wr != null) {
+                p = wr.get();
+                if (p != null)
+                    return p;
+            }
+            p = new MXBeanProxy(mxbeanInterface, mappingFactory);
+            classToProxy.put(mxbeanInterface, new WeakReference<MXBeanProxy>(p));
             return p;
         }
     }
-    private static final WeakHashMap<Class<?>, WeakReference<MXBeanProxy>>
-            mxbeanProxies = new WeakHashMap<Class<?>, WeakReference<MXBeanProxy>>();
+    private static final WeakHashMap<MXBeanMappingFactory, ClassToProxy>
+            mxbeanProxies = newWeakHashMap();
+    private static class ClassToProxy
+            extends WeakHashMap<Class<?>, WeakReference<MXBeanProxy>> {}
+
+    private static <K, V> WeakHashMap<K, V> newWeakHashMap() {
+        return new WeakHashMap<K, V>();
+    }
 
     private Object invokeBroadcasterMethod(Object proxy, Method method,
                                            Object[] args) throws Exception {
@@ -453,7 +486,7 @@
                 objectName.equals(handler.objectName) &&
                 proxy.getClass().equals(args[0].getClass());
         } else if (methodName.equals("toString")) {
-            return (isMXBean ? "MX" : "M") + "BeanProxy(" +
+            return (isMXBean() ? "MX" : "M") + "BeanProxy(" +
                 connection + "[" + objectName + "])";
         } else if (methodName.equals("hashCode")) {
             return objectName.hashCode()+connection.hashCode();
@@ -484,5 +517,5 @@
 
     private final MBeanServerConnection connection;
     private final ObjectName objectName;
-    private final boolean isMXBean;
+    private final MBeanOptions options;
 }
--- a/jdk/src/share/classes/javax/management/MXBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/MXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -44,6 +44,10 @@
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.CompositeDataView;
 import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingClass;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.MXBeanMappingFactoryClass;
 import javax.management.openmbean.OpenDataException;
 import javax.management.openmbean.OpenMBeanInfo;
 import javax.management.openmbean.OpenType;
@@ -78,7 +82,7 @@
     public interface MisleadingMXBean {}
     </pre>
 
-    <h3><a name="MXBean-spec">MXBean specification</a></h3>
+    <h3 id="MXBean-spec">MXBean specification</h3>
 
     <p>The MXBean concept provides a simple way to code an MBean
       that only references a predefined set of types, the ones defined
@@ -314,7 +318,7 @@
     </table>
 
 
-    <h2><a name="mxbean-def">Definition of an MXBean</a></h2>
+    <h2 id="mxbean-def">Definition of an MXBean</h2>
 
     <p>An MXBean is a kind of MBean.  An MXBean object can be
       registered directly in the MBean Server, or it can be used as an
@@ -367,7 +371,7 @@
       above rules will produce an exception.</p>
 
 
-    <h2><a name="naming-conv">Naming conventions</a></h2>
+    <h2 id="naming-conv">Naming conventions</h2>
 
     <p>The same naming conventions are applied to the methods in an
       MXBean as in a Standard MBean:</p>
@@ -413,7 +417,7 @@
       read-only or write-only respectively.</p>
 
 
-    <h2><a name="mapping-rules">Type mapping rules</a></h2>
+    <h2 id="mapping-rules">Type mapping rules</h2>
 
     <p>An MXBean is a kind of Open MBean, as defined by the {@link
       javax.management.openmbean} package.  This means that the types of
@@ -475,7 +479,11 @@
       from type <em>opendata(J)</em> to type <em>J</em>, a null value is
       mapped to a null value.</p>
 
-    <p>The following table summarizes the type mapping rules.</p>
+    <p>In addition to the default type mapping rules, you can specify
+      custom type mappings, as described <a
+      href="#custom">below</a>.</p>
+
+    <p>The following table summarizes the default type mapping rules.</p>
 
     <table border="1" cellpadding="5">
       <tr>
@@ -658,7 +666,7 @@
       TabularData} that serializes as {@code TabularDataSupport}.</p>
 
 
-    <h3><a name="mxbean-map">Mappings for MXBean interfaces</a></h3>
+    <h3 id="mxbean-map">Mappings for MXBean interfaces</h3>
 
     <p>An MXBean interface, or a type referenced within an MXBean
       interface, can reference another MXBean interface, <em>J</em>.
@@ -747,7 +755,7 @@
       general, notably because it does not work well for MBeans that are
       {@link NotificationBroadcaster}s.</p>
 
-    <h3><a name="composite-map">Mappings for other types</a></h3>
+    <h3 id="composite-map">Mappings for other types</h3>
 
     <p>Given a Java class or interface <em>J</em> that does not match the other
       rules in the table above, the MXBean framework will attempt to map
@@ -1035,6 +1043,76 @@
 }
 </pre>
 
+    <p>Alternatively, you can define a custom mapping for your recursive
+      type; see the next section.</p>
+
+    <h3 id="custom">Custom MXBean type mappings</h3>
+
+    <p>You can augment or replace the default type mappings described
+      above with custom mappings.  An example appears in the
+      documentation for {@link MXBeanMapping}.</p>
+
+    <p>If an MXBean uses custom mappings, then an MXBean proxy for
+      that MXBean must use the same mappings for correct behavior.
+      This requires more careful synchronization between client and
+      server than is necessary with the default mappings.  For example
+      it typically requires the client to have the same implementation
+      of any {@link MXBeanMapping} subclasses as the server.  For this
+      reason, custom mappings should be avoided if possible.</p>
+
+    <p>Every MXBean has an associated {@link MXBeanMappingFactory}.
+      Call this <code><em>f</em></code>.  Then every type that appears
+      in that MXBean has an associated {@link MXBeanMapping}
+      determined by <code><em>f</em></code>.  If the type is
+      <code><em>J</em></code>, say, then the mapping is {@link
+      MXBeanMappingFactory#mappingForType
+      <em>f</em>.mappingForType}<code>(<em>J</em>,
+      <em>f</em>)</code>.</p>
+
+    <p>The {@code MXBeanMappingFactory} <code><em>f</em></code> for an
+      MXBean is determined as follows.</p>
+
+    <ul>
+      <li><p>If an {@link JMX.MBeanOptions} argument is supplied to
+          the {@link StandardMBean} constructor that makes an MXBean,
+          or to the {@link JMX#newMXBeanProxy JMX.newMXBeanProxy}
+          method, and the {@code MBeanOptions} object defines a non-null
+          {@code MXBeanMappingFactory}, then that is the value of
+          <code><em>f</em></code>.</p></li>
+
+      <li><p>Otherwise, if the MXBean interface has an {@link
+          MXBeanMappingFactoryClass} annotation, then that annotation
+          must identify a subclass of {@code MXBeanMappingFactory}
+          with a no-argument constructor.  Then
+          <code><em>f</em></code> is the result of calling this
+          constructor.  If the class does not have a no-argument
+          constructor, or if calling the constructor produces an
+          exception, then the MXBean is invalid and an attempt to
+          register it in the MBean Server will produce a {@link
+          NotCompliantMBeanException}.</p>
+
+        <p>This annotation is not inherited from any parent
+          interfaces.  If an MXBean interface has this annotation,
+          then usually any MXBean subinterfaces must repeat the same
+          annotation for correct behavior.</p></li>
+
+      <li><p>Otherwise, if the package in which the MXBean interface
+          appears has an {@code MXBeanMappingFactoryClass} annotation,
+          then <code><em>f</em></code> is determined as if that
+          annotation appeared on the MXBean interface.</p></li>
+
+      <li><p>Otherwise, <code><em>f</em></code> is the default mapping
+          factory, {@link MXBeanMappingFactory#DEFAULT}.</p></li>
+    </ul>
+
+    <p>The default mapping factory recognizes the {@link
+      MXBeanMappingClass} annotation on a class or interface.  If
+      <code><em>J</em></code> is a class or interface that has such an
+      annotation, then the {@code MXBeanMapping} for
+      <code><em>J</em></code> produced by the default mapping factory
+      will be determined by the value of the annotation as described
+      in its {@linkplain MXBeanMappingClass documentation}.</p>
+
     <h3>MBeanInfo contents for an MXBean</h3>
 
     <p>An MXBean is a type of Open MBean.  However, for compatibility
@@ -1091,7 +1169,7 @@
       {@code mxbean} whose value is the string "{@code true}".</p>
 
 
-    <h3><a name="type-names">Type Names</a></h3>
+    <h3 id="type-names">Type Names</h3>
 
     <p>Sometimes the unmapped type <em>T</em> of a method parameter or
     return value in an MXBean must be represented as a string.  If
@@ -1163,6 +1241,8 @@
       appropriate), or <em>C</em> is true of <em>e</em>.{@link
       Throwable#getCause() getCause()}".</p>
 
+   @see MXBeanMapping
+
    @since 1.6
 */
 
--- a/jdk/src/share/classes/javax/management/MatchQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/MatchQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -109,36 +109,7 @@
      * Returns the string representing the object
      */
     public String toString()  {
-        return exp + " like " + new StringValueExp(likeTranslate(pattern));
-    }
-
-    private static String likeTranslate(String s) {
-        StringBuilder sb = new StringBuilder();
-        int c;
-        for (int i = 0; i < s.length(); i += Character.charCount(c)) {
-            c = s.codePointAt(i);
-            switch (c) {
-                case '\\':
-                    i += Character.charCount(c);
-                    sb.append('\\');
-                    if (i < s.length()) {
-                        c = s.codePointAt(i);
-                        sb.appendCodePoint(c);
-    }
-                    break;
-                case '*':
-                    sb.append('%'); break;
-                case '?':
-                    sb.append('_'); break;
-                case '%':
-                    sb.append("\\%"); break;
-                case '_':
-                    sb.append("\\_"); break;
-                default:
-                    sb.appendCodePoint(c); break;
-            }
-        }
-        return sb.toString();
+        return exp + " like " + new StringValueExp(pattern);
     }
 
     /*
--- a/jdk/src/share/classes/javax/management/NotQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/NotQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/NumericValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/NumericValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/ObjectName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/ObjectName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -1781,7 +1781,7 @@
     }
 
     String toQueryString() {
-        return "LIKE " + Query.value(toString());
+        return "like " + Query.value(toString());
     }
 
     /**
--- a/jdk/src/share/classes/javax/management/OrQueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/OrQueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/QualifiedAttributeValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/QualifiedAttributeValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/Query.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/Query.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -108,13 +108,13 @@
  * <dd>Selects MBeans that have a {@code Status} attribute whose value
  *     is one of those three strings.
  *
- * <dt>{@code Message like 'OK: %'}
+ * <dt>{@code Message like 'OK: *'}
  * <dd>Selects MBeans that have a {@code Message} attribute whose value
  *     is a string beginning with {@code "OK: "}.  <b>Notice that the
- *     wildcard characters are SQL's ones.</b>  In the query language,
+ *     wildcard characters are not the ones that SQL uses.</b>  In SQL,
  *     {@code %} means "any sequence of characters" and {@code _}
- *     means "any single character".  In the rest of the JMX API, these
- *     correspond to {@code *} and {@code %} respectively.
+ *     means "any single character".  Here, as in the rest of the JMX API,
+ *     those are represented by {@code *} and {@code ?} respectively.
  *
  * <dt>{@code instanceof 'javax.management.NotificationBroadcaster'}
  * <dd>Selects MBeans that are instances of
@@ -319,11 +319,11 @@
  *
  * <tr><td><i>value</i> <b>LIKE</b> <i>stringLiteral</i>
  *     <td>{@link Query#match Query.match}(<i>q(value)</i>,
- *         <i><a href="#translateWildcards">translateWildcards</a>(q(stringLiteral))</i>)
+ *         <i>q(stringLiteral)</i>)
  *
  * <tr><td><i>value</i> <b>NOT LIKE</b> <i>stringLiteral</i>
  *     <td>{@link Query#not Query.not}({@link Query#match Query.match}(<i>q(value)</i>,
- *         <i><a href="#translateWildcards">translateWildcards</a>(q(stringLiteral))</i>))
+ *         <i>q(stringLiteral)</i>))
  *
  * <tr><td><i>value1</i> <b>+</b> <i>value2</i>
  *     <td>{@link Query#plus Query.plus}(<i>q(value1)</i>, <i>q(value2)</i>)
@@ -360,13 +360,6 @@
  * --><i>floatingPointLiteral</i>))
  * </table>
  *
- * <p id="translateWildcards">Here, <i>translateWildcards</i> is a function
- * that translates from the SQL notation for wildcards, using {@code %} and
- * {@code _}, to the JMX API notation, using {@code *} and {@code ?}.  If the
- * <b>LIKE</b> string already contains {@code *} or {@code ?}, these characters
- * have their literal meanings, and will be quoted in the call to
- * {@link Query#match Query.match}.</p>
- *
  * @since 1.5
  */
  public class Query extends Object   {
--- a/jdk/src/share/classes/javax/management/QueryEval.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/QueryEval.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/QueryExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/QueryExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/QueryNotificationFilter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/QueryNotificationFilter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -43,12 +43,6 @@
  * 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#addListenerWithFilter JMX.addListenerWithFilter}
- * can be used when you cannot be sure whether this class is present in the
- * agent you are connecting to.</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/jdk/src/share/classes/javax/management/QueryParser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/QueryParser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -490,8 +490,7 @@
                 }
                 AttributeValueExp alhs = (AttributeValueExp) lhs;
                 StringValueExp sve = stringvalue();
-                String s = sve.getValue();
-                q = Query.match(alhs, patternValueExp(s));
+                q = Query.match(alhs, sve);
                 break;
             }
 
@@ -624,40 +623,4 @@
             throw new IllegalArgumentException("Expected string: " + t);
         return Query.value(t.string);
     }
-
-    // Convert the SQL pattern syntax, using % and _, to the Query.match
-    // syntax, using * and ?.  The tricky part is recognizing \% and
-    // \_ as literal values, and also not replacing them inside [].
-    // But Query.match does not recognize \ inside [], which makes our
-    // job a tad easier.
-    private StringValueExp patternValueExp(String s) {
-        int c;
-        for (int i = 0; i < s.length(); i += Character.charCount(c)) {
-            c = s.codePointAt(i);
-            switch (c) {
-                case '\\':
-                    i++;  // i += Character.charCount(c), but we know it's 1!
-                    if (i >= s.length())
-                        throw new IllegalArgumentException("\\ at end of pattern");
-                    break;
-                case '[':
-                    i = s.indexOf(']', i);
-                    if (i < 0)
-                        throw new IllegalArgumentException("[ without ]");
-                    break;
-                case '%':
-                    s = s.substring(0, i) + "*" + s.substring(i + 1);
-                    break;
-                case '_':
-                    s = s.substring(0, i) + "?" + s.substring(i + 1);
-                    break;
-                case '*':
-                case '?':
-                    s = s.substring(0, i) + '\\' + (char) c + s.substring(i + 1);
-                    i++;
-                    break;
-            }
-        }
-        return Query.value(s);
-    }
 }
--- a/jdk/src/share/classes/javax/management/StandardMBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/StandardMBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,22 +25,19 @@
 
 package javax.management;
 
-import static com.sun.jmx.defaults.JmxProperties.MISC_LOGGER;
 import com.sun.jmx.mbeanserver.DescriptorCache;
 import com.sun.jmx.mbeanserver.Introspector;
 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.io.PrintWriter;
-import java.io.StringWriter;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.WeakHashMap;
 import java.util.logging.Level;
+import javax.management.openmbean.MXBeanMappingFactory;
 import javax.management.openmbean.OpenMBeanAttributeInfo;
 import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
 import javax.management.openmbean.OpenMBeanConstructorInfo;
@@ -50,6 +47,9 @@
 import javax.management.openmbean.OpenMBeanParameterInfo;
 import javax.management.openmbean.OpenMBeanParameterInfoSupport;
 
+import static com.sun.jmx.defaults.JmxProperties.MISC_LOGGER;
+import static javax.management.JMX.MBeanOptions;
+
 /**
  * <p>An MBean whose management interface is determined by reflection
  * on a Java interface.</p>
@@ -141,6 +141,11 @@
     private volatile MBeanInfo cachedMBeanInfo;
 
     /**
+     * The MBeanOptions for this StandardMBean.
+     **/
+    private MBeanOptions options;
+
+    /**
      * Make a DynamicMBean out of <var>implementation</var>, using the
      * specified <var>mbeanInterface</var> class.
      * @param implementation The implementation of this MBean.
@@ -155,12 +160,14 @@
      *        implementation is allowed. If null implementation is allowed,
      *        and a null implementation is passed, then the implementation
      *        is assumed to be <var>this</var>.
+     * @param options MBeanOptions to apply to this instance.
      * @exception IllegalArgumentException if the given
      *    <var>implementation</var> is null, and null is not allowed.
      **/
+    @SuppressWarnings("unchecked")  // cast to T
     private <T> void construct(T implementation, Class<T> mbeanInterface,
                                boolean nullImplementationAllowed,
-                               boolean isMXBean)
+                               MBeanOptions options)
                                throws NotCompliantMBeanException {
         if (implementation == null) {
             // Have to use (T)this rather than mbeanInterface.cast(this)
@@ -169,20 +176,23 @@
                 implementation = Util.<T>cast(this);
             else throw new IllegalArgumentException("implementation is null");
         }
-        if (isMXBean) {
-            if (mbeanInterface == null) {
-                mbeanInterface = Util.cast(Introspector.getMXBeanInterface(
-                        implementation.getClass()));
-            }
-            this.mbean = new MXBeanSupport(implementation, mbeanInterface);
+        if (options == null)
+            options = new MBeanOptions();
+        MXBeanMappingFactory mappingFactory = options.getMXBeanMappingFactory();
+        boolean mx = (mappingFactory != null);
+        if (mbeanInterface == null) {
+            mbeanInterface = Util.cast(Introspector.getStandardOrMXBeanInterface(
+                                       implementation.getClass(), mx));
+        }
+        if (mx) {
+            this.mbean =
+                    new MXBeanSupport(implementation, mbeanInterface,
+                                      mappingFactory);
         } else {
-            if (mbeanInterface == null) {
-                mbeanInterface = Util.cast(Introspector.getStandardMBeanInterface(
-                        implementation.getClass()));
-            }
             this.mbean =
                     new StandardMBeanSupport(implementation, mbeanInterface);
         }
+        this.options = options.canonical();
     }
 
     /**
@@ -211,14 +221,14 @@
      **/
     public <T> StandardMBean(T implementation, Class<T> mbeanInterface)
         throws NotCompliantMBeanException {
-        construct(implementation, mbeanInterface, false, false);
+        construct(implementation, mbeanInterface, false, null);
     }
 
     /**
      * <p>Make a DynamicMBean out of <var>this</var>, using the specified
      * <var>mbeanInterface</var> class.</p>
      *
-     * <p>Call {@link #StandardMBean(java.lang.Object, java.lang.Class)
+     * <p>Calls {@link #StandardMBean(java.lang.Object, java.lang.Class)
      *       this(this,mbeanInterface)}.
      * This constructor is reserved to subclasses.</p>
      *
@@ -231,13 +241,14 @@
      **/
     protected StandardMBean(Class<?> mbeanInterface)
         throws NotCompliantMBeanException {
-        construct(null, mbeanInterface, true, false);
+        construct(null, mbeanInterface, true, null);
     }
 
     /**
      * <p>Make a DynamicMBean out of the object
      * <var>implementation</var>, using the specified
-     * <var>mbeanInterface</var> class.  This constructor can be used
+     * <var>mbeanInterface</var> class, and choosing whether the
+     * resultant MBean is an MXBean.  This constructor can be used
      * to make either Standard MBeans or MXBeans.  Unlike the
      * constructor {@link #StandardMBean(Object, Class)}, it
      * does not throw NotCompliantMBeanException.</p>
@@ -267,7 +278,17 @@
     public <T> StandardMBean(T implementation, Class<T> mbeanInterface,
                              boolean isMXBean) {
         try {
-            construct(implementation, mbeanInterface, false, isMXBean);
+            MBeanOptions opts = new MBeanOptions();
+            if (mbeanInterface == null) {
+                mbeanInterface = Util.cast(Introspector.getStandardOrMXBeanInterface(
+                        implementation.getClass(), isMXBean));
+            }
+            if (isMXBean) {
+                MXBeanMappingFactory f = MXBeanMappingFactory.forInterface(
+                        mbeanInterface);
+                opts.setMXBeanMappingFactory(f);
+            }
+            construct(implementation, mbeanInterface, false, opts);
         } catch (NotCompliantMBeanException e) {
             throw new IllegalArgumentException(e);
         }
@@ -275,12 +296,13 @@
 
     /**
      * <p>Make a DynamicMBean out of <var>this</var>, using the specified
-     * <var>mbeanInterface</var> class.  This constructor can be used
+     * <var>mbeanInterface</var> class, and choosing whether the resulting
+     * MBean is an MXBean.  This constructor can be used
      * to make either Standard MBeans or MXBeans.  Unlike the
      * constructor {@link #StandardMBean(Object, Class)}, it
      * does not throw NotCompliantMBeanException.</p>
      *
-     * <p>Call {@link #StandardMBean(java.lang.Object, java.lang.Class, boolean)
+     * <p>Calls {@link #StandardMBean(java.lang.Object, java.lang.Class, boolean)
      *       this(this, mbeanInterface, isMXBean)}.
      * This constructor is reserved to subclasses.</p>
      *
@@ -297,7 +319,77 @@
      **/
     protected StandardMBean(Class<?> mbeanInterface, boolean isMXBean) {
         try {
-            construct(null, mbeanInterface, true, isMXBean);
+            MBeanOptions opts = new MBeanOptions();
+            if (mbeanInterface == null) {
+                mbeanInterface = Introspector.getStandardOrMXBeanInterface(
+                        getClass(), isMXBean);
+            }
+            if (isMXBean) {
+                MXBeanMappingFactory f = MXBeanMappingFactory.forInterface(
+                        mbeanInterface);
+                opts.setMXBeanMappingFactory(f);
+            }
+            construct(null, mbeanInterface, true, opts);
+        } catch (NotCompliantMBeanException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    /**
+     * <p>Make a DynamicMBean out of the object
+     * <var>implementation</var>, using the specified
+     * <var>mbeanInterface</var> class and the specified options.</p>
+     *
+     * @param implementation The implementation of this MBean.
+     * @param mbeanInterface The Management Interface exported by this
+     *        MBean's implementation. If <code>null</code>, then this
+     *        object will use standard JMX design pattern to determine
+     *        the management interface associated with the given
+     *        implementation.
+     * @param options MBeanOptions that control the operation of the resulting
+     *        MBean, as documented in the {@link MBeanOptions} class.
+     * @param <T> Allows the compiler to check
+     * that {@code implementation} does indeed implement the class
+     * described by {@code mbeanInterface}.  The compiler can only
+     * check this if {@code mbeanInterface} is a class literal such
+     * as {@code MyMBean.class}.
+     *
+     * @exception IllegalArgumentException if the given
+     *    <var>implementation</var> is null, or if the <var>mbeanInterface</var>
+     *    does not follow JMX design patterns for Management Interfaces, or
+     *    if the given <var>implementation</var> does not implement the
+     *    specified interface.
+     **/
+    public <T> StandardMBean(T implementation,
+                             Class<T> mbeanInterface,
+                             MBeanOptions options) {
+        try {
+            construct(implementation, mbeanInterface, false, options);
+        } catch (NotCompliantMBeanException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    /**
+     * <p>Make a DynamicMBean out of <var>this</var>, using the specified
+     * <var>mbeanInterface</var> class and the specified options.</p>
+     *
+     * <p>Calls {@link #StandardMBean(Object, Class, JMX.MBeanOptions)
+     *       this(this,mbeanInterface,options)}.
+     * This constructor is reserved to subclasses.</p>
+     *
+     * @param mbeanInterface The Management Interface exported by this
+     *        MBean.
+     * @param options MBeanOptions that control the operation of the resulting
+     *        MBean, as documented in the {@link MBeanOptions} class.
+     *
+     * @exception IllegalArgumentException if the <var>mbeanInterface</var>
+     *    does not follow JMX design patterns for Management Interfaces, or
+     *    if <var>this</var> does not implement the specified interface.
+     **/
+    protected StandardMBean(Class<?> mbeanInterface, MBeanOptions options) {
+        try {
+            construct(null, mbeanInterface, true, options);
         } catch (NotCompliantMBeanException e) {
             throw new IllegalArgumentException(e);
         }
@@ -326,13 +418,19 @@
 
         if (implementation == null)
             throw new IllegalArgumentException("implementation is null");
+        setImplementation2(implementation);
+    }
 
-        if (isMXBean()) {
+    private <T> void setImplementation2(T implementation)
+    throws NotCompliantMBeanException {
+        Class<? super T> intf = Util.cast(getMBeanInterface());
+
+        if (this.mbean.isMXBean()) {
             this.mbean = new MXBeanSupport(implementation,
-                    Util.<Class<Object>>cast(getMBeanInterface()));
+                    intf,
+                    options.getMXBeanMappingFactory());
         } else {
-            this.mbean = new StandardMBeanSupport(implementation,
-                    Util.<Class<Object>>cast(getMBeanInterface()));
+            this.mbean = new StandardMBeanSupport(implementation, intf);
         }
     }
 
@@ -362,6 +460,19 @@
         return mbean.getResource().getClass();
     }
 
+    /**
+     * Return the MBeanOptions that were specified or implied for this StandardMBean
+     * instance.  If an MBeanOptions object was supplied when this StandardMBean
+     * instance was constructed, and if that object has not been modified in the
+     * meantime, then the returned object will be equal to that object, although
+     * it might not be the same object.
+     * @return The MBeanOptions that were specified or implied for this StandardMBean
+     * instance.
+     */
+    public MBeanOptions getOptions() {
+        return options.uncanonical();
+    }
+
     // ------------------------------------------------------------------
     // From the DynamicMBean interface.
     // ------------------------------------------------------------------
@@ -726,7 +837,7 @@
      * @return the MBeanNotificationInfo[] for the new MBeanInfo.
      **/
     MBeanNotificationInfo[] getNotifications(MBeanInfo info) {
-        return null;
+        return info.getNotifications();
     }
 
     /**
@@ -1234,5 +1345,4 @@
             return true;
         }
     }
-
 }
--- a/jdk/src/share/classes/javax/management/StringValueExp.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/StringValueExp.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/ToQueryString.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +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 javax.management;
-
-/* QueryExp classes can extend this to get non-default treatment for
- * Query.toString(q).  We're reluctant to change the public toString()
- * methods of the classes because people might be parsing them, even
- * though that's rather fragile.  But Query.toString(q) has no such
- * constraint so it can use the new toQueryString() method defined here.
- */
-class ToQueryString {
-    String toQueryString() {
-        return toString();
-    }
-}
--- a/jdk/src/share/classes/javax/management/loading/MLet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/loading/MLet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/loading/MLetParser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/loading/MLetParser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/DescriptorSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2007 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/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfoSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanInfoSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2007 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/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/CounterMonitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/monitor/GaugeMonitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/GaugeMonitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/monitor/Monitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/monitor/Monitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/ArrayType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/ArrayType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/CompositeDataInvocationHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -26,7 +26,7 @@
 package javax.management.openmbean;
 
 import com.sun.jmx.mbeanserver.MXBeanLookup;
-import com.sun.jmx.mbeanserver.OpenConverter;
+import com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
@@ -115,7 +115,12 @@
        is null.
     */
     public CompositeDataInvocationHandler(CompositeData compositeData) {
-        this(compositeData, null);
+        this(compositeData, MXBeanMappingFactory.DEFAULT);
+    }
+
+    public CompositeDataInvocationHandler(CompositeData compositeData,
+                                          MXBeanMappingFactory mappingFactory) {
+        this(compositeData, mappingFactory, null);
     }
 
     /**
@@ -134,11 +139,13 @@
        is null.
     */
     CompositeDataInvocationHandler(CompositeData compositeData,
+                                   MXBeanMappingFactory mappingFactory,
                                    MXBeanLookup lookup) {
         if (compositeData == null)
             throw new IllegalArgumentException("compositeData");
         this.compositeData = compositeData;
         this.lookup = lookup;
+        this.mappingFactory = mappingFactory;
     }
 
     /**
@@ -176,7 +183,7 @@
             }
         }
 
-        String propertyName = OpenConverter.propertyName(method);
+        String propertyName = DefaultMXBeanMappingFactory.propertyName(method);
         if (propertyName == null) {
             throw new IllegalArgumentException("Method is not getter: " +
                                                method.getName());
@@ -185,7 +192,7 @@
         if (compositeData.containsKey(propertyName))
             openValue = compositeData.get(propertyName);
         else {
-            String decap = OpenConverter.decapitalize(propertyName);
+            String decap = DefaultMXBeanMappingFactory.decapitalize(propertyName);
             if (compositeData.containsKey(decap))
                 openValue = compositeData.get(decap);
             else {
@@ -196,9 +203,10 @@
                 throw new IllegalArgumentException(msg);
             }
         }
-        OpenConverter converter =
-            OpenConverter.toConverter(method.getGenericReturnType());
-        return converter.fromOpenValue(lookup, openValue);
+        MXBeanMapping mapping =
+            mappingFactory.mappingForType(method.getGenericReturnType(),
+                                   MXBeanMappingFactory.DEFAULT);
+        return mapping.fromOpenValue(openValue);
     }
 
     /* This method is called when equals(Object) is
@@ -242,4 +250,5 @@
 
     private final CompositeData compositeData;
     private final MXBeanLookup lookup;
+    private final MXBeanMappingFactory mappingFactory;
 }
--- a/jdk/src/share/classes/javax/management/openmbean/CompositeType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/CompositeType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -159,8 +159,8 @@
     }
 
     private static void checkForNullElement(Object[] arg, String argName) {
-        if ( (arg == null) || (arg.length == 0) ) {
-            throw new IllegalArgumentException("Argument "+ argName +"[] cannot be null or empty.");
+        if (arg == null) {
+            throw new IllegalArgumentException("Argument "+ argName +"[] cannot be null.");
         }
         for (int i=0; i<arg.length; i++) {
             if (arg[i] == null) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/management/openmbean/MXBeanMapping.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,207 @@
+/*
+ * 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.openmbean;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Type;
+
+/**
+ * <p>A custom mapping between Java types and Open types for use in MXBeans.
+ * To define such a mapping, subclass this class and define at least the
+ * {@link #fromOpenValue fromOpenValue} and {@link #toOpenValue toOpenValue}
+ * methods, and optionally the {@link #checkReconstructible} method.
+ * Then either use an {@link MXBeanMappingClass} annotation on your custom
+ * Java types, or include this MXBeanMapping in an
+ * {@link MXBeanMappingFactory}.</p>
+ *
+ * <p>For example, suppose we have a class {@code MyLinkedList}, which looks
+ * like this:</p>
+ *
+ * <pre>
+ * public class MyLinkedList {
+ *     public MyLinkedList(String name, MyLinkedList next) {...}
+ *     public String getName() {...}
+ *     public MyLinkedList getNext() {...}
+ * }
+ * </pre>
+ *
+ * <p>This is not a valid type for MXBeans, because it contains a
+ * self-referential property "next" defined by the {@code getNext()}
+ * method.  MXBeans do not support recursive types.  So we would like
+ * to specify a mapping for {@code MyLinkedList} explicitly. When an
+ * MXBean interface contains {@code MyLinkedList}, that will be mapped
+ * into a {@code String[]}, which is a valid Open Type.</p>
+ *
+ * <p>To define this mapping, we first subclass {@code MXBeanMapping}:</p>
+ *
+ * <pre>
+ * public class MyLinkedListMapping extends MXBeanMapping {
+ *     public MyLinkedListMapping(Type type) throws OpenDataException {
+ *         super(MyLinkedList.class, ArrayType.getArrayType(SimpleType.STRING));
+ *         if (type != MyLinkedList.class)
+ *             throw new OpenDataException("Mapping only valid for MyLinkedList");
+ *     }
+ *
+ *     {@literal @Override}
+ *     public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+ *         String[] array = (String[]) openValue;
+ *         MyLinkedList list = null;
+ *         for (int i = array.length - 1; i &gt;= 0; i--)
+ *             list = new MyLinkedList(array[i], list);
+ *         return list;
+ *     }
+ *
+ *     {@literal @Override}
+ *     public Object toOpenValue(Object javaValue) throws OpenDataException {
+ *         ArrayList&lt;String&gt; array = new ArrayList&lt;String&gt;();
+ *         for (MyLinkedList list = (MyLinkedList) javaValue; list != null;
+ *              list = list.getNext())
+ *             array.add(list.getName());
+ *         return array.toArray(new String[0]);
+ *     }
+ * }
+ * </pre>
+ *
+ * <p>The call to the superclass constructor specifies what the
+ * original Java type is ({@code MyLinkedList.class}) and what Open
+ * Type it is mapped to ({@code
+ * ArrayType.getArrayType(SimpleType.STRING)}). The {@code
+ * fromOpenValue} method says how we go from the Open Type ({@code
+ * String[]}) to the Java type ({@code MyLinkedList}), and the {@code
+ * toOpenValue} method says how we go from the Java type to the Open
+ * Type.</p>
+ *
+ * <p>With this mapping defined, we can annotate the {@code MyLinkedList}
+ * class appropriately:</p>
+ *
+ * <pre>
+ * {@literal @MXBeanMappingClass}(MyLinkedListMapping.class)
+ * public class MyLinkedList {...}
+ * </pre>
+ *
+ * <p>Now we can use {@code MyLinkedList} in an MXBean interface and it
+ * will work.</p>
+ *
+ * <p>If we are unable to modify the {@code MyLinkedList} class,
+ * we can define an {@link MXBeanMappingFactory}.  See the documentation
+ * of that class for further details.</p>
+ */
+public abstract class MXBeanMapping {
+    private final Type javaType;
+    private final OpenType<?> openType;
+    private final Class<?> openClass;
+
+    /**
+     * <p>Construct a mapping between the given Java type and the given
+     * Open Type.</p>
+     *
+     * @param javaType the Java type (for example, {@code MyLinkedList}).
+     * @param openType the Open Type (for example, {@code
+     * ArrayType.getArrayType(SimpleType.STRING)})
+     *
+     * @throws NullPointerException if either argument is null.
+     */
+    protected MXBeanMapping(Type javaType, OpenType<?> openType) {
+        if (javaType == null || openType == null)
+            throw new NullPointerException("Null argument");
+        this.javaType = javaType;
+        this.openType = openType;
+        this.openClass = makeOpenClass(javaType, openType);
+    }
+
+    /**
+     * <p>The Java type that was supplied to the constructor.</p>
+     * @return the Java type that was supplied to the constructor.
+     */
+    public final Type getJavaType() {
+        return javaType;
+    }
+
+    /**
+     * <p>The Open Type that was supplied to the constructor.</p>
+     * @return the Open Type that was supplied to the constructor.
+     */
+    public final OpenType<?> getOpenType() {
+        return openType;
+    }
+
+    /**
+     * <p>The Java class that corresponds to instances of the
+     * {@linkplain #getOpenType() Open Type} for this mapping.</p>
+     * @return the Java class that corresponds to instances of the
+     * Open Type for this mapping.
+     * @see OpenType#getClassName
+     */
+    public final Class<?> getOpenClass() {
+        return openClass;
+    }
+
+    private static Class<?> makeOpenClass(Type javaType, OpenType<?> openType) {
+        if (javaType instanceof Class<?> && ((Class<?>) javaType).isPrimitive())
+            return (Class<?>) javaType;
+        try {
+            String className = OpenType.validClassName(openType.getClassName());
+            return Class.forName(className, false, null);
+        } catch (ClassNotFoundException e) {
+            throw new RuntimeException(e);  // should not happen
+        } catch (OpenDataException e) {
+            throw new IllegalArgumentException("Bad OpenType: " + openType, e);
+        }
+    }
+
+    /**
+     * <p>Convert an instance of the Open Type into the Java type.
+     * @param openValue the value to be converted.
+     * @return the converted value.
+     * @throws InvalidObjectException if the value cannot be converted.
+     */
+    public abstract Object fromOpenValue(Object openValue)
+    throws InvalidObjectException;
+
+    /**
+     * <p>Convert an instance of the Java type into the Open Type.
+     * @param javaValue the value to be converted.
+     * @return the converted value.
+     * @throws OpenDataException if the value cannot be converted.
+     */
+    public abstract Object toOpenValue(Object javaValue)
+    throws OpenDataException;
+
+
+    /**
+     * <p>Throw an appropriate InvalidObjectException if we will not
+     * be able to convert back from the open data to the original Java
+     * object.  The {@link #fromOpenValue fromOpenValue} throws an
+     * exception if a given open data value cannot be converted.  This
+     * method throws an exception if <em>no</em> open data values can
+     * be converted.  The default implementation of this method never
+     * throws an exception.  Subclasses can override it as
+     * appropriate.</p>
+     * @throws InvalidObjectException if {@code fromOpenValue} will throw
+     * an exception no matter what its argument is.
+     */
+    public void checkReconstructible() throws InvalidObjectException {}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/management/openmbean/MXBeanMappingClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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.openmbean;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.management.NotCompliantMBeanException;
+
+/**
+ * Specifies the MXBean mapping to be used for this Java type.
+ * @see MXBeanMapping
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+@Documented @Inherited
+public @interface MXBeanMappingClass {
+    /**
+     * <p>The {@link MXBeanMapping} class to be used to map the
+     * annotated type.  This class must have a public constructor with
+     * a single argument of type {@link java.lang.reflect.Type}.  The
+     * constructor will be called with the annotated type as an
+     * argument.  See the {@code MXBeanMapping} documentation
+     * for an example.</p>
+     *
+     * <p>If the {@code MXBeanMapping} cannot in fact handle that
+     * type, the constructor should throw an {@link
+     * OpenDataException}.  If the constructor throws this or any other
+     * exception then an MXBean in which the annotated type appears is
+     * invalid, and registering it in the MBean Server will produce a
+     * {@link NotCompliantMBeanException}.
+     */
+    public Class<? extends MXBeanMapping> value();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/management/openmbean/MXBeanMappingFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,162 @@
+/*
+ * 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.openmbean;
+
+import com.sun.jmx.mbeanserver.DefaultMXBeanMappingFactory;
+import java.lang.reflect.Type;
+
+/**
+ * <p>Defines how types are mapped for a given MXBean or set of MXBeans.
+ * An {@code MXBeanMappingFactory} can be specified either through the
+ * {@link MXBeanMappingFactoryClass} annotation, or through the
+ * {@link javax.management.JMX.MBeanOptions JMX.MBeanOptions} argument to a
+ * {@link javax.management.StandardMBean StandardMBean} constructor or MXBean
+ * proxy.</p>
+ *
+ * <p>An {@code MXBeanMappingFactory} must return an {@code MXBeanMapping}
+ * for any Java type that appears in the MXBeans that the factory is being
+ * used for.  Usually it does that by handling any custom types, and
+ * forwarding everything else to the {@linkplain #DEFAULT default mapping
+ * factory}.</p>
+ *
+ * <p>Consider the {@code MyLinkedList} example from the {@link MXBeanMapping}
+ * documentation.  If we are unable to change the {@code MyLinkedList} class
+ * to add an {@link MXBeanMappingClass} annotation, we could achieve the same
+ * effect by defining {@code MyLinkedListMappingFactory} as follows:</p>
+ *
+ * <pre>
+ * public class MyLinkedListMappingFactory implements MXBeanMappingFactory {
+ *     public MyLinkedListMappingFactory() {}
+ *
+ *     public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+ *     throws OpenDataException {
+ *         if (t == MyLinkedList.class)
+ *             return new MyLinkedListMapping(t);
+ *         else
+ *             return MXBeanMappingFactory.DEFAULT.mappingForType(t, f);
+ *     }
+ * }
+ * </pre>
+ *
+ * <p>The mapping factory handles only the {@code MyLinkedList} class.
+ * Every other type is forwarded to the default mapping factory.
+ * This includes types such as {@code MyLinkedList[]} and
+ * {@code List<MyLinkedList>}; the default mapping factory will recursively
+ * invoke {@code MyLinkedListMappingFactory} to map the contained
+ * {@code MyLinkedList} type.</p>
+ *
+ * <p>Once we have defined {@code MyLinkedListMappingFactory}, we can use
+ * it in an MXBean interface like this:</p>
+ *
+ * <pre>
+ * {@literal @MXBeanMappingFactoryClass}(MyLinkedListMappingFactory.class)
+ * public interface SomethingMXBean {
+ *     public MyLinkedList getSomething();
+ * }
+ * </pre>
+ *
+ * <p>Alternatively we can annotate the package that {@code SomethingMXBean}
+ * appears in, or we can supply the factory to a {@link
+ * javax.management.StandardMBean StandardMBean} constructor or MXBean
+ * proxy.</p>
+ */
+public abstract class MXBeanMappingFactory {
+    /**
+     * <p>Construct an instance of this class.</p>
+     */
+    protected MXBeanMappingFactory() {}
+
+    /**
+     * <p>Mapping factory that applies the default rules for MXBean
+     * mappings, as described in the <a
+     * href="../MXBean.html#MXBean-spec">MXBean specification</a>.</p>
+     */
+    public static final MXBeanMappingFactory DEFAULT =
+            new DefaultMXBeanMappingFactory();
+
+    /**
+     * <p>Determine the appropriate MXBeanMappingFactory to use for the given
+     * MXBean interface, based on its annotations.  If the interface has an
+     * {@link MXBeanMappingFactoryClass @MXBeanMappingFactoryClass} annotation,
+     * that is used to determine the MXBeanMappingFactory.  Otherwise, if the
+     * package containing the interface has such an annotation, that is used.
+     * Otherwise the MXBeanMappingFactory is the {@linkplain #DEFAULT default}
+     * one.</p>
+     *
+     * @param intf the MXBean interface for which to determine the
+     * MXBeanMappingFactory.
+     *
+     * @return the MXBeanMappingFactory for the given MXBean interface.
+     *
+     * @throws IllegalArgumentException if {@code intf} is null, or if an
+     * exception occurs while trying constructing an MXBeanMappingFactory
+     * based on an annotation.  In the second case, the exception will appear
+     * in the {@linkplain Throwable#getCause() cause chain} of the
+     * {@code IllegalArgumentException}.
+     */
+    public static MXBeanMappingFactory forInterface(Class<?> intf) {
+        if (intf == null)
+            throw new IllegalArgumentException("Null interface");
+        MXBeanMappingFactoryClass annot =
+                intf.getAnnotation(MXBeanMappingFactoryClass.class);
+        if (annot == null) {
+            Package p = intf.getPackage();
+            if (p != null)
+                annot = p.getAnnotation(MXBeanMappingFactoryClass.class);
+        }
+        if (annot == null)
+            return MXBeanMappingFactory.DEFAULT;
+        Class<? extends MXBeanMappingFactory> factoryClass = annot.value();
+        try {
+            return annot.value().newInstance();
+        } catch (Exception e) {
+            throw new IllegalArgumentException(
+                    "Could not instantiate MXBeanMappingFactory " +
+                    factoryClass.getName() +
+                    " from @MXBeanMappingFactoryClass", e);
+        }
+    }
+
+    /**
+     * <p>Return the mapping for the given Java type.  Typically, a
+     * mapping factory will return mappings for types it handles, and
+     * forward other types to another mapping factory, most often
+     * the {@linkplain #DEFAULT default one}.</p>
+     * @param t the Java type to be mapped.
+     * @param f the original mapping factory that was consulted to do
+     * the mapping.  A mapping factory should pass this parameter intact
+     * if it forwards a type to another mapping factory.  In the example,
+     * this is how {@code MyLinkedListMappingFactory} works for types
+     * like {@code MyLinkedList[]} and {@code List<MyLinkedList>}.
+     * @return the mapping for the given type.
+     * @throws OpenDataException if this type cannot be mapped.  This
+     * exception is appropriate if the factory is supposed to handle
+     * all types of this sort (for example, all linked lists), but
+     * cannot handle this particular type.
+     */
+    public abstract MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+    throws OpenDataException;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/share/classes/javax/management/openmbean/MXBeanMappingFactoryClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,72 @@
+/*
+ * 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.openmbean;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * <p>Specifies the MXBean mapping factory to be used for Java types
+ * in an MXBean interface, or in all MXBean interfaces in a package.</p>
+ *
+ * <p>Applying a mapping factory to all Java types in an MXBean interface
+ * looks like this:</p>
+ *
+ * <pre>
+ * {@literal @MXBeanMappingFactoryClass}(MyLinkedListMappingFactory.class)
+ * public interface SomethingMXBean {
+ *     public MyLinkedList getSomething();
+ * }
+ * </pre>
+ *
+ * <p>Applying a mapping factory to all Java types in all MXBean interfaces
+ * in a package, say {@code com.example.mxbeans}, looks like this.  In the
+ * package source directory, create a file called {@code package-info.java}
+ * with these contents:</p>
+ *
+ * <pre>
+ * {@literal @MXBeanMappingFactoryClass}(MyLinkedListMappingFactory.class)
+ * package com.example.mxbeans;
+ * </pre>
+ *
+ * @see MXBeanMappingFactory
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE, ElementType.PACKAGE})
+@Documented @Inherited
+public @interface MXBeanMappingFactoryClass {
+    /**
+     * <p>The {@link MXBeanMappingFactory} class to be used to map
+     * types in the annotated interface or package.  This class must
+     * have a public constructor with no arguments.  See the {@code
+     * MXBeanMappingFactory} documentation for an example.</p>
+     */
+    public Class<? extends MXBeanMappingFactory> value();
+}
--- a/jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanAttributeInfoSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanConstructorInfoSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/OpenMBeanInfoSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanInfoSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/OpenMBeanOperationInfoSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenMBeanOperationInfoSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/OpenType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/OpenType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -219,7 +219,7 @@
         });
     }
 
-    private static String validClassName(String className) throws OpenDataException {
+    static String validClassName(String className) throws OpenDataException {
         className   = valid("className", className);
 
         // Check if className describes an array class, and determines its elements' class name.
--- a/jdk/src/share/classes/javax/management/openmbean/SimpleType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/SimpleType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/openmbean/TabularType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/openmbean/TabularType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/relation/RelationNotification.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/relation/RelationNotification.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/relation/RelationService.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/relation/RelationService.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/relation/RelationSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/relation/RelationSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/remote/JMXConnectorFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/remote/JMXConnectorFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/remote/JMXConnectorServerFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/remote/JMXConnectorServerFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/remote/JMXServiceURL.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnectorServer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/management/timer/Timer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/management/timer/Timer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/print/attribute/standard/ReferenceUriSchemesSupported.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/print/attribute/standard/ReferenceUriSchemesSupported.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/rmi/ssl/SslRMIClientSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/rmi/ssl/SslRMIServerSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/rmi/ssl/SslRMIServerSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/javax/security/auth/kerberos/KeyImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/security/auth/kerberos/KeyImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/security/cert/X509Certificate.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/security/cert/X509Certificate.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/DebugGraphicsInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/DebugGraphicsInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JEditorPane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JEditorPane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JFileChooser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JFileChooser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -770,7 +770,8 @@
      * @since 1.4
      */
     protected JDialog createDialog(Component parent) throws HeadlessException {
-        String title = getUI().getDialogTitle(this);
+        FileChooserUI ui = getUI();
+        String title = ui.getDialogTitle(this);
         putClientProperty(AccessibleContext.ACCESSIBLE_DESCRIPTION_PROPERTY,
                           title);
 
@@ -794,6 +795,7 @@
                 dialog.getRootPane().setWindowDecorationStyle(JRootPane.FILE_CHOOSER_DIALOG);
             }
         }
+        dialog.getRootPane().setDefaultButton(ui.getDefaultButton(this));
         dialog.pack();
         dialog.setLocationRelativeTo(parent);
 
--- a/jdk/src/share/classes/javax/swing/JInternalFrame.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JInternalFrame.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JOptionPane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JOptionPane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JPopupMenu.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JPopupMenu.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -41,6 +41,7 @@
 import javax.swing.plaf.ComponentUI;
 import javax.swing.plaf.basic.BasicComboPopup;
 import javax.swing.event.*;
+import sun.security.util.SecurityConstants;
 
 import java.applet.Applet;
 
@@ -320,17 +321,67 @@
      * This adustment may be cancelled by invoking the application with
      * -Djavax.swing.adjustPopupLocationToFit=false
      */
-    Point adjustPopupLocationToFitScreen(int xposition, int yposition) {
-        Point p = new Point(xposition, yposition);
+    Point adjustPopupLocationToFitScreen(int xPosition, int yPosition) {
+        Point popupLocation = new Point(xPosition, yPosition);
+
+        if(popupPostionFixDisabled == true || GraphicsEnvironment.isHeadless()) {
+            return popupLocation;
+        }
 
-        if(popupPostionFixDisabled == true || GraphicsEnvironment.isHeadless())
-            return p;
+        // Get screen bounds
+        Rectangle scrBounds;
+        GraphicsConfiguration gc = getCurrentGraphicsConfiguration(popupLocation);
+        Toolkit toolkit = Toolkit.getDefaultToolkit();
+        if(gc != null) {
+            // If we have GraphicsConfiguration use it to get screen bounds
+            scrBounds = gc.getBounds();
+        } else {
+            // If we don't have GraphicsConfiguration use primary screen
+            scrBounds = new Rectangle(toolkit.getScreenSize());
+        }
 
-        Toolkit toolkit = Toolkit.getDefaultToolkit();
-        Rectangle screenBounds;
+        // Calculate the screen size that popup should fit
+        Dimension popupSize = JPopupMenu.this.getPreferredSize();
+        int popupRightX = popupLocation.x + popupSize.width;
+        int popupBottomY = popupLocation.y + popupSize.height;
+        int scrWidth = scrBounds.width;
+        int scrHeight = scrBounds.height;
+        if (!canPopupOverlapTaskBar()) {
+            // Insets include the task bar. Take them into account.
+            Insets scrInsets = toolkit.getScreenInsets(gc);
+            scrBounds.x += scrInsets.left;
+            scrBounds.y += scrInsets.top;
+            scrWidth -= scrInsets.left + scrInsets.right;
+            scrHeight -= scrInsets.top + scrInsets.bottom;
+        }
+        int scrRightX = scrBounds.x + scrWidth;
+        int scrBottomY = scrBounds.y + scrHeight;
+
+        // Ensure that popup menu fits the screen
+        if (popupRightX > scrRightX) {
+            popupLocation.x = scrRightX - popupSize.width;
+            if( popupLocation.x < scrBounds.x ) {
+                popupLocation.x = scrBounds.x ;
+            }
+        }
+        if (popupBottomY > scrBottomY) {
+            popupLocation.y = scrBottomY - popupSize.height;
+            if( popupLocation.y < scrBounds.y ) {
+                popupLocation.y = scrBounds.y;
+            }
+        }
+
+        return popupLocation;
+    }
+
+    /**
+     * Tries to find GraphicsConfiguration
+     * that contains the mouse cursor position.
+     * Can return null.
+     */
+    private GraphicsConfiguration getCurrentGraphicsConfiguration(
+            Point popupLocation) {
         GraphicsConfiguration gc = null;
-        // Try to find GraphicsConfiguration, that includes mouse
-        // pointer position
         GraphicsEnvironment ge =
             GraphicsEnvironment.getLocalGraphicsEnvironment();
         GraphicsDevice[] gd = ge.getScreenDevices();
@@ -338,50 +389,36 @@
             if(gd[i].getType() == GraphicsDevice.TYPE_RASTER_SCREEN) {
                 GraphicsConfiguration dgc =
                     gd[i].getDefaultConfiguration();
-                if(dgc.getBounds().contains(p)) {
+                if(dgc.getBounds().contains(popupLocation)) {
                     gc = dgc;
                     break;
                 }
             }
         }
-
         // If not found and we have invoker, ask invoker about his gc
         if(gc == null && getInvoker() != null) {
             gc = getInvoker().getGraphicsConfiguration();
         }
-
-        if(gc != null) {
-            // If we have GraphicsConfiguration use it to get
-            // screen bounds
-            screenBounds = gc.getBounds();
-        } else {
-            // If we don't have GraphicsConfiguration use primary screen
-            screenBounds = new Rectangle(toolkit.getScreenSize());
-        }
-
-        Dimension size;
-
-        size = JPopupMenu.this.getPreferredSize();
+        return gc;
+    }
 
-        // Use long variables to prevent overflow
-        long pw = (long) p.x + (long) size.width;
-        long ph = (long) p.y + (long) size.height;
-
-        if( pw > screenBounds.x + screenBounds.width )
-             p.x = screenBounds.x + screenBounds.width - size.width;
-
-        if( ph > screenBounds.y + screenBounds.height)
-             p.y = screenBounds.y + screenBounds.height - size.height;
-
-        /* Change is made to the desired (X,Y) values, when the
-           PopupMenu is too tall OR too wide for the screen
-        */
-        if( p.x < screenBounds.x )
-            p.x = screenBounds.x ;
-        if( p.y < screenBounds.y )
-            p.y = screenBounds.y;
-
-        return p;
+    /**
+     * Checks that there are enough security permissions
+     * to make popup "always on top", which allows to show it above the task bar.
+     */
+    static boolean canPopupOverlapTaskBar() {
+        boolean result = true;
+        try {
+            SecurityManager sm = System.getSecurityManager();
+            if (sm != null) {
+                sm.checkPermission(
+                        SecurityConstants.SET_WINDOW_ALWAYS_ON_TOP_PERMISSION);
+            }
+        } catch (SecurityException se) {
+            // There is no permission to show popups over the task bar
+            result = false;
+        }
+        return result;
     }
 
 
--- a/jdk/src/share/classes/javax/swing/JProgressBar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JProgressBar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JScrollBar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JScrollBar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JSlider.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JSlider.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,18 +25,15 @@
 
 package javax.swing;
 
-import javax.swing.border.*;
 import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.accessibility.*;
 
 import java.io.Serializable;
 import java.io.ObjectOutputStream;
-import java.io.ObjectInputStream;
 import java.io.IOException;
 
-import java.awt.Color;
-import java.awt.Font;
+import java.awt.*;
 import java.util.*;
 import java.beans.*;
 
@@ -409,8 +406,7 @@
      * @since 1.4
      */
     public ChangeListener[] getChangeListeners() {
-        return (ChangeListener[])listenerList.getListeners(
-                ChangeListener.class);
+        return listenerList.getListeners(ChangeListener.class);
     }
 
 
@@ -642,9 +638,7 @@
     /**
      * Sets the model's {@code valueIsAdjusting} property.  Slider look and
      * feel implementations should set this property to {@code true} when
-     * a knob drag begins, and to {@code false} when the drag ends.  The
-     * slider model will not generate {@code ChangeEvent}s while
-     * {@code valueIsAdjusting} is {@code true}.
+     * a knob drag begins, and to {@code false} when the drag ends.
      *
      * @param b the new value for the {@code valueIsAdjusting} property
      * @see   #getValueIsAdjusting
@@ -764,6 +758,33 @@
         updateLabelSizes();
     }
 
+    /**
+     * {@inheritDoc}
+     * @since 1.7
+     */
+    public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) {
+        if (!isShowing()) {
+            return false;
+        }
+
+        // Check that there is a label with such image
+        Enumeration elements = labelTable.elements();
+
+        while (elements.hasMoreElements()) {
+            Component component = (Component) elements.nextElement();
+
+            if (component instanceof JLabel) {
+                JLabel label = (JLabel) component;
+
+                if (SwingUtilities.doesIconReferenceImage(label.getIcon(), img) ||
+                        SwingUtilities.doesIconReferenceImage(label.getDisabledIcon(), img)) {
+                    return super.imageUpdate(img, infoflags, x, y, w, h);
+                }
+            }
+        }
+
+        return false;
+    }
 
     /**
      * Returns the dictionary of what labels to draw at which values.
@@ -826,17 +847,16 @@
      * @see JComponent#updateUI
      */
     protected void updateLabelUIs() {
-        if ( getLabelTable() == null ) {
+        Dictionary labelTable = getLabelTable();
+
+        if (labelTable == null) {
             return;
         }
-        Enumeration labels = getLabelTable().keys();
+        Enumeration labels = labelTable.keys();
         while ( labels.hasMoreElements() ) {
-            Object value = getLabelTable().get( labels.nextElement() );
-            if ( value instanceof JComponent ) {
-                JComponent component = (JComponent)value;
-                component.updateUI();
-                component.setSize( component.getPreferredSize()  );
-            }
+            JComponent component = (JComponent) labelTable.get(labels.nextElement());
+            component.updateUI();
+            component.setSize(component.getPreferredSize());
         }
     }
 
@@ -845,11 +865,8 @@
         if (labelTable != null) {
             Enumeration labels = labelTable.elements();
             while (labels.hasMoreElements()) {
-                Object value = labels.nextElement();
-                if (value instanceof JComponent) {
-                    JComponent component = (JComponent)value;
-                    component.setSize(component.getPreferredSize());
-                }
+                JComponent component = (JComponent) labels.nextElement();
+                component.setSize(component.getPreferredSize());
             }
         }
     }
@@ -960,14 +977,14 @@
                 if ( e.getPropertyName().equals( "minimum" ) ||
                      e.getPropertyName().equals( "maximum" ) ) {
 
-                    Enumeration keys = getLabelTable().keys();
-                    Object key = null;
+                    Dictionary labelTable = getLabelTable();
+                    Enumeration keys = labelTable.keys();
                     Hashtable hashtable = new Hashtable();
 
                     // Save the labels that were added by the developer
                     while ( keys.hasMoreElements() ) {
-                        key = keys.nextElement();
-                        Object value = getLabelTable().get( key );
+                        Object key = keys.nextElement();
+                        Object value = labelTable.get(key);
                         if ( !(value instanceof LabelUIResource) ) {
                             hashtable.put( key, value );
                         }
@@ -979,7 +996,7 @@
                     // Add the saved labels
                     keys = hashtable.keys();
                     while ( keys.hasMoreElements() ) {
-                        key = keys.nextElement();
+                        Object key = keys.nextElement();
                         put( key, hashtable.get( key ) );
                     }
 
@@ -996,8 +1013,10 @@
 
         SmartHashtable table = new SmartHashtable( increment, start );
 
-        if ( getLabelTable() != null && (getLabelTable() instanceof PropertyChangeListener) ) {
-            removePropertyChangeListener( (PropertyChangeListener)getLabelTable() );
+        Dictionary labelTable = getLabelTable();
+
+        if (labelTable != null && (labelTable instanceof PropertyChangeListener)) {
+            removePropertyChangeListener((PropertyChangeListener) labelTable);
         }
 
         addPropertyChangeListener( table );
--- a/jdk/src/share/classes/javax/swing/JSplitPane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JSplitPane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JTable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JTable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JTextArea.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JTextArea.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/JTextPane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/JTextPane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/MenuSelectionManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/MenuSelectionManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/Popup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/Popup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/PopupFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/PopupFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -548,47 +548,46 @@
         }
 
         /**
-         * Returns true if the Popup can fit on the screen.
+         * Returns true if popup can fit the screen and the owner's top parent.
+         * It determines can popup be lightweight or mediumweight.
          */
         boolean fitsOnScreen() {
+            boolean result = false;
             Component component = getComponent();
-
             if (owner != null && component != null) {
-                Container parent;
-                int width = component.getWidth();
-                int height = component.getHeight();
-                for(parent = owner.getParent(); parent != null ;
-                    parent = parent.getParent()) {
-                    if (parent instanceof JFrame ||
-                        parent instanceof JDialog ||
-                        parent instanceof JWindow) {
+                Container parent = (Container) SwingUtilities.getRoot(owner);
+                int popupWidth = component.getWidth();
+                int popupHeight = component.getHeight();
+                Rectangle parentBounds = parent.getBounds();
+                if (parent instanceof JFrame ||
+                    parent instanceof JDialog ||
+                    parent instanceof JWindow) {
+
+                    Insets i = parent.getInsets();
+                    parentBounds.x += i.left;
+                    parentBounds.y += i.top;
+                    parentBounds.width -= i.left + i.right;
+                    parentBounds.height -= i.top + i.bottom;
 
-                        Rectangle r = parent.getBounds();
-                        Insets i = parent.getInsets();
-                        r.x += i.left;
-                        r.y += i.top;
-                        r.width -= (i.left + i.right);
-                        r.height -= (i.top + i.bottom);
-
-                        GraphicsConfiguration gc = parent.getGraphicsConfiguration();
+                    if (JPopupMenu.canPopupOverlapTaskBar()) {
+                        GraphicsConfiguration gc =
+                                parent.getGraphicsConfiguration();
                         Rectangle popupArea = getContainerPopupArea(gc);
-                        return r.intersection(popupArea).contains(x, y, width, height);
-
-                    } else if (parent instanceof JApplet) {
-                        Rectangle r = parent.getBounds();
-                        Point p  = parent.getLocationOnScreen();
-
-                        r.x = p.x;
-                        r.y = p.y;
-                        return r.contains(x, y, width, height);
-                    } else if (parent instanceof Window ||
-                               parent instanceof Applet) {
-                        // No suitable swing component found
-                        break;
+                        result = parentBounds.intersection(popupArea)
+                                .contains(x, y, popupWidth, popupHeight);
+                    } else {
+                        result = parentBounds
+                                .contains(x, y, popupWidth, popupHeight);
                     }
+                } else if (parent instanceof JApplet) {
+                    Point p = parent.getLocationOnScreen();
+                    parentBounds.x = p.x;
+                    parentBounds.y = p.y;
+                    result = parentBounds
+                            .contains(x, y, popupWidth, popupHeight);
                 }
             }
-            return false;
+            return result;
         }
 
         Rectangle getContainerPopupArea(GraphicsConfiguration gc) {
--- a/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/ScrollPaneLayout.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/SpinnerNumberModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/TablePrintable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/TablePrintable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/filechooser/FileSystemView.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/FileChooserUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/FileChooserUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,7 +25,7 @@
 
 package javax.swing.plaf;
 
-import javax.swing.JFileChooser;
+import javax.swing.*;
 import javax.swing.filechooser.FileFilter;
 import javax.swing.filechooser.FileView;
 import java.io.File;
@@ -46,4 +46,15 @@
 
     public abstract void rescanCurrentDirectory(JFileChooser fc);
     public abstract void ensureFileIsVisible(JFileChooser fc, File f);
+
+    /**
+     * Returns default button for current <code>LookAndFeel</code>.
+     * <code>JFileChooser</code> will use this button as default button
+     * for dialog windows.
+     *
+     * @since 1.7
+     */
+    public JButton getDefaultButton(JFileChooser fc) {
+        return null;
+    }
 }
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicButtonUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicButtonUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -196,7 +196,7 @@
     }
 
     protected void sort(Vector<? extends File> v){
-        ShellFolder.sortFiles(v);
+        ShellFolder.sort(v);
     }
 
     // Obsolete - not used
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -384,6 +384,10 @@
         return null;
     }
 
+    public JButton getDefaultButton(JFileChooser fc) {
+        return getApproveButton(fc);
+    }
+
     public String getApproveButtonToolTipText(JFileChooser fc) {
         String tooltipText = fc.getApproveButtonToolTipText();
         if(tooltipText != null) {
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicLookAndFeel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicSliderUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,25 +25,12 @@
 
 package javax.swing.plaf.basic;
 
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Adjustable;
 import java.awt.event.*;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.awt.Point;
-import java.awt.Insets;
-import java.awt.Color;
-import java.awt.IllegalComponentStateException;
-import java.awt.Polygon;
+import java.awt.*;
 import java.beans.*;
 import java.util.Dictionary;
 import java.util.Enumeration;
 
-import javax.swing.border.AbstractBorder;
-
 import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.plaf.*;
@@ -409,7 +396,7 @@
                 Enumeration elements = dictionary.elements();
                 int baseline = -1;
                 while (elements.hasMoreElements()) {
-                    Component label = (Component)elements.nextElement();
+                    JComponent label = (JComponent) elements.nextElement();
                     Dimension pref = label.getPreferredSize();
                     int labelBaseline = label.getBaseline(pref.width,
                                                           pref.height);
@@ -634,7 +621,7 @@
 
 
     protected void calculateTrackRect() {
-        int centerSpacing = 0; // used to center sliders added using BorderLayout.CENTER (bug 4275631)
+        int centerSpacing; // used to center sliders added using BorderLayout.CENTER (bug 4275631)
         if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
             centerSpacing = thumbRect.height;
             if ( slider.getPaintTicks() ) centerSpacing += getTickLength();
@@ -764,7 +751,7 @@
         if ( dictionary != null ) {
             Enumeration keys = dictionary.keys();
             while ( keys.hasMoreElements() ) {
-                Component label = (Component)dictionary.get( keys.nextElement() );
+                JComponent label = (JComponent) dictionary.get(keys.nextElement());
                 widest = Math.max( label.getPreferredSize().width, widest );
             }
         }
@@ -777,7 +764,7 @@
         if ( dictionary != null ) {
             Enumeration keys = dictionary.keys();
             while ( keys.hasMoreElements() ) {
-                Component label = (Component)dictionary.get( keys.nextElement() );
+                JComponent label = (JComponent) dictionary.get(keys.nextElement());
                 tallest = Math.max( label.getPreferredSize().height, tallest );
             }
         }
@@ -1001,22 +988,14 @@
 
     public void paintTicks(Graphics g)  {
         Rectangle tickBounds = tickRect;
-        int i;
-        int maj, min, max;
-        int w = tickBounds.width;
-        int h = tickBounds.height;
-        int centerEffect, tickHeight;
 
         g.setColor(DefaultLookup.getColor(slider, this, "Slider.tickColor", Color.black));
 
-        maj = slider.getMajorTickSpacing();
-        min = slider.getMinorTickSpacing();
-
         if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
            g.translate( 0, tickBounds.y);
 
             int value = slider.getMinimum();
-            int xPos = 0;
+            int xPos;
 
             if ( slider.getMinorTickSpacing() > 0 ) {
                 while ( value <= slider.getMaximum() ) {
@@ -1042,7 +1021,7 @@
            g.translate(tickBounds.x, 0);
 
             int value = slider.getMinimum();
-            int yPos = 0;
+            int yPos;
 
             if ( slider.getMinorTickSpacing() > 0 ) {
                 int offset = 0;
@@ -1111,10 +1090,19 @@
                 Integer key = (Integer)keys.nextElement();
                 int value = key.intValue();
                 if (value >= minValue && value <= maxValue) {
-                    Component label = (Component)dictionary.get( key );
-                    if (label instanceof JComponent) {
-                        ((JComponent)label).setEnabled(enabled);
+                    JComponent label = (JComponent) dictionary.get(key);
+                    label.setEnabled(enabled);
+
+                    if (label instanceof JLabel) {
+                        Icon icon = label.isEnabled() ? ((JLabel) label).getIcon() : ((JLabel) label).getDisabledIcon();
+
+                        if (icon instanceof ImageIcon) {
+                            // Register Slider as an image observer. It allows to catch notifications about
+                            // image changes (e.g. gif animation)
+                            Toolkit.getDefaultToolkit().checkImage(((ImageIcon) icon).getImage(), -1, -1, slider);
+                        }
                     }
+
                     if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
                         g.translate( 0, labelBounds.y );
                         paintHorizontalLabel( g, value, label );
@@ -1364,7 +1352,7 @@
         int min = slider.getMinimum();
         int max = slider.getMaximum();
         double valueRange = (double)max - (double)min;
-        double pixelsPerValue = (double)trackHeight / (double)valueRange;
+        double pixelsPerValue = (double)trackHeight / valueRange;
         int trackBottom = trackY + (trackHeight - 1);
         int yPosition;
 
@@ -1715,7 +1703,7 @@
         * of the thumb relative to the origin of the track.
         */
         public void mouseDragged(MouseEvent e) {
-            int thumbMiddle = 0;
+            int thumbMiddle;
 
             if (!slider.isEnabled()) {
                 return;
@@ -1841,7 +1829,7 @@
         public void componentResized(ComponentEvent e)  {
             getHandler().componentResized(e);
         }
-    };
+    }
 
     /**
      * Focus-change listener.
@@ -1903,7 +1891,7 @@
             return b;
         }
 
-    };
+    }
 
 
     /**
--- a/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/basic/BasicToolBarUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalIconFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/metal/MetalLookAndFeel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -853,9 +853,7 @@
                      "ESCAPE", "cancelSelection",
                      "F2", "editFileName",
                      "F5", "refresh",
-                     "BACK_SPACE", "Go Up",
-                     "ENTER", "approveSelection",
-                "ctrl ENTER", "approveSelection"
+                     "BACK_SPACE", "Go Up"
                  }),
 
 
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthArrowButton.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthDesktopPaneUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSliderUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,26 +25,17 @@
 
 package javax.swing.plaf.synth;
 
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Adjustable;
 import java.awt.event.*;
 import java.awt.Graphics;
 import java.awt.Dimension;
-import java.awt.Font;
 import java.awt.FontMetrics;
 import java.awt.Rectangle;
 import java.awt.Point;
 import java.awt.Insets;
-import java.awt.Color;
-import java.awt.IllegalComponentStateException;
-import java.awt.Polygon;
 import java.beans.*;
 import java.util.Dictionary;
 import java.util.Enumeration;
-import javax.swing.border.AbstractBorder;
 import javax.swing.*;
-import javax.swing.event.*;
 import javax.swing.plaf.*;
 import javax.swing.plaf.basic.BasicSliderUI;
 import sun.swing.plaf.synth.SynthUI;
@@ -203,8 +194,7 @@
                 centerY += valueHeight + 2;
                 centerY += trackHeight + trackInsets.top + trackInsets.bottom;
                 centerY += tickHeight + 2;
-                Component label = (Component)slider.getLabelTable().
-                                   elements().nextElement();
+                JComponent label = (JComponent) slider.getLabelTable().elements().nextElement();
                 Dimension pref = label.getPreferredSize();
                 return centerY + label.getBaseline(pref.width, pref.height);
             }
@@ -226,8 +216,7 @@
                     int trackHeight = contentHeight - valueHeight;
                     int yPosition = yPositionForValue(value.intValue(), trackY,
                                                       trackHeight);
-                    Component label = (Component)slider.getLabelTable().
-                            get(value);
+                    JComponent label = (JComponent) slider.getLabelTable().get(value);
                     Dimension pref = label.getPreferredSize();
                     return yPosition - pref.height / 2 +
                             label.getBaseline(pref.width, pref.height);
@@ -434,16 +423,14 @@
     /**
      * Calculates the pad for the label at the specified index.
      *
-     * @param index index of the label to calculate pad for.
+     * @param i index of the label to calculate pad for.
      * @return padding required to keep label visible.
      */
     private int getPadForLabel(int i) {
-        Dictionary dictionary = slider.getLabelTable();
         int pad = 0;
 
-        Object o = dictionary.get(i);
-        if (o != null) {
-            Component c = (Component)o;
+        JComponent c = (JComponent) slider.getLabelTable().get(i);
+        if (c != null) {
             int centerX = xPositionForValue(i);
             int cHalfWidth = c.getPreferredSize().width / 2;
             if (centerX - cHalfWidth < insetCache.left) {
@@ -500,8 +487,6 @@
         }
     }
 
-    private static Rectangle unionRect = new Rectangle();
-
     public void setThumbLocation(int x, int y) {
         super.setThumbLocation(x, y);
         // Value rect is tied to the thumb location.  We need to repaint when
@@ -544,7 +529,7 @@
                 trackBorder;
         int trackLength = trackBottom - trackTop;
         double valueRange = (double)max - (double)min;
-        double pixelsPerValue = (double)trackLength / (double)valueRange;
+        double pixelsPerValue = (double)trackLength / valueRange;
         int yPosition;
 
         if (!drawInverted()) {
@@ -802,8 +787,7 @@
         }
 
         public void mouseDragged(MouseEvent e) {
-            SynthScrollBarUI ui;
-            int thumbMiddle = 0;
+            int thumbMiddle;
 
             if (!slider.isEnabled()) {
                 return;
--- a/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/SynthSplitPaneUI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/plaf/synth/doc-files/synth.dtd	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/plaf/synth/doc-files/synth.dtd	Mon Jul 07 09:11:55 2008 -0700
@@ -2,7 +2,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
 
 <!--
- 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/jdk/src/share/classes/javax/swing/table/TableColumn.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/table/TableColumn.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/AbstractDocument.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/AbstractDocument.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/FlowView.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/FlowView.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -333,17 +333,24 @@
      * @since 1.3
      */
     public static class FlowStrategy {
-        int damageStart = Integer.MAX_VALUE;
+        Position damageStart = null;
         Vector<View> viewBuffer;
 
         void addDamage(FlowView fv, int offset) {
             if (offset >= fv.getStartOffset() && offset < fv.getEndOffset()) {
-                damageStart = Math.min(damageStart, offset);
+                if (damageStart == null || offset < damageStart.getOffset()) {
+                    try {
+                        damageStart = fv.getDocument().createPosition(offset);
+                    } catch (BadLocationException e) {
+                        // shouldn't happen since offset is inside view bounds
+                        assert(false);
+                    }
+                }
             }
         }
 
         void unsetDamage() {
-            damageStart = Integer.MAX_VALUE;
+            damageStart = null;
         }
 
         /**
@@ -438,13 +445,14 @@
             int p1 = fv.getEndOffset();
 
             if (fv.majorAllocValid) {
-                if (damageStart == Integer.MAX_VALUE) {
+                if (damageStart == null) {
                     return;
                 }
                 // In some cases there's no view at position damageStart, so
                 // step back and search again. See 6452106 for details.
-                while ((rowIndex = fv.getViewIndexAtPosition(damageStart)) < 0) {
-                    damageStart--;
+                int offset = damageStart.getOffset();
+                while ((rowIndex = fv.getViewIndexAtPosition(offset)) < 0) {
+                    offset--;
                 }
                 if (rowIndex > 0) {
                     rowIndex--;
--- a/jdk/src/share/classes/javax/swing/text/NumberFormatter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/NumberFormatter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/PlainDocument.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/PlainDocument.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/Segment.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/Segment.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/StyleConstants.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/StyleConstants.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/AccessibleHTML.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/AccessibleHTML.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/CSS.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/CSS.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/HTMLEditorKit.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/AttributeList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/parser/DTD.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/DTD.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/parser/Element.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/Element.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/html/parser/Entity.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/Entity.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/src/share/classes/javax/swing/text/html/parser/Parser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/html/parser/Parser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/rtf/RTFAttributes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFAttributes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/text/rtf/RTFGenerator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/text/rtf/RTFGenerator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/javax/swing/tree/DefaultTreeSelectionModel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/applet/AppletPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/applet/AppletPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/applet/AppletViewer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/applet/AppletViewer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/awt/FontConfiguration.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/awt/FontConfiguration.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/awt/im/InputContext.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/awt/im/InputContext.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/awt/shell/ShellFolder.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/awt/shell/ShellFolder.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,6 +25,7 @@
 
 package sun.awt.shell;
 
+import javax.swing.*;
 import java.awt.Image;
 import java.awt.Toolkit;
 import java.io.*;
@@ -37,6 +38,10 @@
  */
 
 public abstract class ShellFolder extends File {
+    private static final String COLUMN_NAME = "FileChooser.fileNameHeaderText";
+    private static final String COLUMN_SIZE = "FileChooser.fileSizeHeaderText";
+    private static final String COLUMN_DATE = "FileChooser.fileDateHeaderText";
+
     protected ShellFolder parent;
 
     /**
@@ -268,8 +273,45 @@
 
     // Override File methods
 
-    public static void sortFiles(List files) {
-        shellFolderManager.sortFiles(files);
+    public static void sort(List<? extends File> files) {
+        if (files == null || files.size() <= 1) {
+            return;
+        }
+
+        // Check that we can use the ShellFolder.sortChildren() method:
+        //   1. All files have the same non-null parent
+        //   2. All files is ShellFolders
+        File commonParent = null;
+
+        for (File file : files) {
+            File parent = file.getParentFile();
+
+            if (parent == null || !(file instanceof ShellFolder)) {
+                commonParent = null;
+
+                break;
+            }
+
+            if (commonParent == null) {
+                commonParent = parent;
+            } else {
+                if (commonParent != parent && !commonParent.equals(parent)) {
+                    commonParent = null;
+
+                    break;
+                }
+            }
+        }
+
+        if (commonParent instanceof ShellFolder) {
+            ((ShellFolder) commonParent).sortChildren(files);
+        } else {
+            Collections.sort(files, FILE_COMPARATOR);
+        }
+    }
+
+    public void sortChildren(List<? extends File> files) {
+        Collections.sort(files, FILE_COMPARATOR);
     }
 
     public boolean isAbsolute() {
@@ -356,18 +398,131 @@
     }
 
     public static ShellFolderColumnInfo[] getFolderColumns(File dir) {
-        return shellFolderManager.getFolderColumns(dir);
-    }
+        ShellFolderColumnInfo[] columns = null;
+
+        if (dir instanceof ShellFolder) {
+            columns = ((ShellFolder) dir).getFolderColumns();
+        }
 
-    public static Object getFolderColumnValue(File file, int column) {
-        return shellFolderManager.getFolderColumnValue(file, column);
+        if (columns == null) {
+            columns = new ShellFolderColumnInfo[]{
+                    new ShellFolderColumnInfo(COLUMN_NAME, 150,
+                            SwingConstants.LEADING, true, null,
+                            FILE_COMPARATOR),
+                    new ShellFolderColumnInfo(COLUMN_SIZE, 75,
+                            SwingConstants.RIGHT, true, null,
+                            DEFAULT_COMPARATOR, true),
+                    new ShellFolderColumnInfo(COLUMN_DATE, 130,
+                            SwingConstants.LEADING, true, null,
+                            DEFAULT_COMPARATOR, true)
+            };
+        }
+
+        return columns;
     }
 
     public ShellFolderColumnInfo[] getFolderColumns() {
         return null;
     }
 
+    public static Object getFolderColumnValue(File file, int column) {
+        if (file instanceof ShellFolder) {
+            Object value = ((ShellFolder)file).getFolderColumnValue(column);
+            if (value != null) {
+                return value;
+            }
+        }
+
+        if (file == null || !file.exists()) {
+            return null;
+        }
+
+        switch (column) {
+            case 0:
+                // By default, file name will be rendered using getSystemDisplayName()
+                return file;
+
+            case 1: // size
+                return file.isDirectory() ? null : Long.valueOf(file.length());
+
+            case 2: // date
+                if (isFileSystemRoot(file)) {
+                    return null;
+                }
+                long time = file.lastModified();
+                return (time == 0L) ? null : new Date(time);
+
+            default:
+                return null;
+        }
+    }
+
     public Object getFolderColumnValue(int column) {
         return null;
     }
+
+    /**
+     * Provides a default comparator for the default column set
+     */
+    private static final Comparator DEFAULT_COMPARATOR = new Comparator() {
+        public int compare(Object o1, Object o2) {
+            int gt;
+
+            if (o1 == null && o2 == null) {
+                gt = 0;
+            } else if (o1 != null && o2 == null) {
+                gt = 1;
+            } else if (o1 == null && o2 != null) {
+                gt = -1;
+            } else if (o1 instanceof Comparable) {
+                gt = ((Comparable) o1).compareTo(o2);
+            } else {
+                gt = 0;
+            }
+
+            return gt;
+        }
+    };
+
+    private static final Comparator<File> FILE_COMPARATOR = new Comparator<File>() {
+        public int compare(File f1, File f2) {
+            ShellFolder sf1 = null;
+            ShellFolder sf2 = null;
+
+            if (f1 instanceof ShellFolder) {
+                sf1 = (ShellFolder) f1;
+                if (sf1.isFileSystem()) {
+                    sf1 = null;
+                }
+            }
+            if (f2 instanceof ShellFolder) {
+                sf2 = (ShellFolder) f2;
+                if (sf2.isFileSystem()) {
+                    sf2 = null;
+                }
+            }
+
+            if (sf1 != null && sf2 != null) {
+                return sf1.compareTo(sf2);
+            } else if (sf1 != null) {
+                // Non-file shellfolders sort before files
+                return -1;
+            } else if (sf2 != null) {
+                return 1;
+            } else {
+                String name1 = f1.getName();
+                String name2 = f2.getName();
+
+                // First ignore case when comparing
+                int diff = name1.compareToIgnoreCase(name2);
+                if (diff != 0) {
+                    return diff;
+                } else {
+                    // May differ in case (e.g. "mail" vs. "Mail")
+                    // We need this test for consistent sorting
+                    return name1.compareTo(name2);
+                }
+            }
+        }
+    };
 }
--- a/jdk/src/share/classes/sun/awt/shell/ShellFolderManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/awt/shell/ShellFolderManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -27,8 +27,6 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.util.*;
-import javax.swing.SwingConstants;
 
 /**
  * @author Michael Martak
@@ -36,10 +34,6 @@
  */
 
 class ShellFolderManager {
-    private static final String COLUMN_NAME = "FileChooser.fileNameHeaderText";
-    private static final String COLUMN_SIZE = "FileChooser.fileSizeHeaderText";
-    private static final String COLUMN_DATE = "FileChooser.fileDateHeaderText";
-
     /**
      * Create a shell folder from a file.
      * Override to return machine-dependent behavior.
@@ -107,142 +101,4 @@
         }
         return (dir.getParentFile() == null);
     }
-
-    public void sortFiles(List files) {
-        Collections.sort(files, fileComparator);
-    }
-
-    private Comparator fileComparator = new Comparator() {
-        public int compare(Object a, Object b) {
-            return compare((File)a, (File)b);
-        }
-
-        public int compare(File f1, File f2) {
-            ShellFolder sf1 = null;
-            ShellFolder sf2 = null;
-
-            if (f1 instanceof ShellFolder) {
-                sf1 = (ShellFolder)f1;
-                if (sf1.isFileSystem()) {
-                    sf1 = null;
-                }
-            }
-            if (f2 instanceof ShellFolder) {
-                sf2 = (ShellFolder)f2;
-                if (sf2.isFileSystem()) {
-                    sf2 = null;
-                }
-            }
-
-            if (sf1 != null && sf2 != null) {
-                return sf1.compareTo(sf2);
-            } else if (sf1 != null) {
-                return -1;      // Non-file shellfolders sort before files
-            } else if (sf2 != null) {
-                return 1;
-            } else {
-                String name1 = f1.getName();
-                String name2 = f2.getName();
-
-                // First ignore case when comparing
-                int diff = name1.toLowerCase().compareTo(name2.toLowerCase());
-                if (diff != 0) {
-                    return diff;
-                } else {
-                    // May differ in case (e.g. "mail" vs. "Mail")
-                    // We need this test for consistent sorting
-                    return name1.compareTo(name2);
-                }
-            }
-        }
-    };
-
-    public ShellFolderColumnInfo[] getFolderColumns(File dir) {
-        ShellFolderColumnInfo[] columns = null;
-
-        if (dir instanceof ShellFolder) {
-            columns = ((ShellFolder)dir).getFolderColumns();
-        }
-
-        if (columns == null) {
-            columns = new ShellFolderColumnInfo[]{
-                new ShellFolderColumnInfo(COLUMN_NAME, 150,
-                        SwingConstants.LEADING, true, null,
-                        fileComparator),
-                new ShellFolderColumnInfo(COLUMN_SIZE, 75,
-                        SwingConstants.RIGHT, true, null,
-                        ComparableComparator.getInstance(), true),
-                new ShellFolderColumnInfo(COLUMN_DATE, 130,
-                        SwingConstants.LEADING, true, null,
-                        ComparableComparator.getInstance(), true)
-            };
-        }
-
-        return columns;
-    }
-
-    public Object getFolderColumnValue(File file, int column) {
-        if (file instanceof ShellFolder) {
-            Object value = ((ShellFolder)file).getFolderColumnValue(column);
-            if (value != null) {
-                return value;
-            }
-        }
-
-        if (file == null || !file.exists()) {
-            return null;
-        }
-
-        switch (column) {
-            case 0:
-                // By default, file name will be rendered using getSystemDisplayName()
-                return file;
-
-            case 1: // size
-                return file.isDirectory() ? null : new Long(file.length());
-
-            case 2: // date
-                if (isFileSystemRoot(file)) {
-                    return null;
-                }
-                long time = file.lastModified();
-                return (time == 0L) ? null : new Date(time);
-
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * This class provides a default comparator for the default column set
-     */
-    private static class ComparableComparator implements Comparator {
-        private static Comparator instance;
-
-        public static Comparator getInstance() {
-            if (instance == null) {
-                instance = new ComparableComparator();
-            }
-            return instance;
-        }
-
-        public int compare(Object o1, Object o2) {
-            int gt;
-
-            if (o1 == null && o2 == null) {
-                gt = 0;
-            } else if (o1 != null && o2 == null) {
-                gt = 1;
-            } else if (o1 == null && o2 != null) {
-                gt = -1;
-            } else if (o1 instanceof Comparable) {
-                gt = ((Comparable) o1).compareTo(o2);
-            } else {
-                gt = 0;
-            }
-
-            return gt;
-        }
-    }
-
 }
--- a/jdk/src/share/classes/sun/font/AttributeValues.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/AttributeValues.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2004-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/sun/font/FileFontStrike.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/FileFontStrike.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/font/Font2D.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/Font2D.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/font/FontManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/FontManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/font/FontResolver.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/FontResolver.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 1999-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/sun/font/GlyphLayout.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/GlyphLayout.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2003-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/sun/font/PhysicalStrike.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/PhysicalStrike.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/font/TrueTypeFont.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/TrueTypeFont.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/font/Type1Font.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/font/Type1Font.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/instrument/InstrumentationImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/instrument/InstrumentationImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/java2d/SunGraphics2D.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/java2d/loops/SurfaceType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/java2d/loops/SurfaceType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/ClassLoadingImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/ClassLoadingImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/CompilationImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/CompilationImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/Flag.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/Flag.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/GarbageCollectorImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/GarbageCollectorImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/GcInfoBuilder.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/GcInfoBuilder.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/GcInfoCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/GcInfoCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/management/HotSpotDiagnostic.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/HotSpotDiagnostic.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/HotspotCompilation.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/HotspotCompilation.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/HotspotInternal.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/HotspotInternal.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/LockDataConverter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/LockDataConverter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/ManagementFactoryHelper.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MappedMXBeanType.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MappedMXBeanType.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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/jdk/src/share/classes/sun/management/MemoryImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MemoryImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MemoryManagerImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MemoryManagerImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MemoryNotifInfoCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MemoryPoolImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MemoryPoolImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MemoryUsageCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MemoryUsageCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/MonitorInfoCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/MonitorInfoCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/NotificationEmitterSupport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/NotificationEmitterSupport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/OperatingSystemImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/OperatingSystemImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/RuntimeImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/RuntimeImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/StackTraceElementCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/StackTraceElementCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/ThreadImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/ThreadImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/ThreadInfoCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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/jdk/src/share/classes/sun/management/Util.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/Util.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/VMManagementImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/VMManagementImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/VMOptionCompositeData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/VMOptionCompositeData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/management/snmp/jvminstr/JvmMemPoolEntryImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/management/snmp/jvminstr/JvmMemPoolEntryImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/ClassFileTransformer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/ClassFileTransformer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/Cleaner.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/Cleaner.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/ExtensionDependency.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/ExtensionDependency.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/GC.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/GC.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/Launcher.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/Launcher.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/PerformanceLogger.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/PerformanceLogger.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/src/share/classes/sun/misc/ProxyGenerator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/ProxyGenerator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/misc/URLClassPath.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/misc/URLClassPath.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/NetProperties.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/NetProperties.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/NetworkClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/NetworkClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2003 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/ftp/FtpClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/ftp/FtpClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/MessageHeader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/MessageHeader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/www/MimeTable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/MimeTable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-1999 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/www/http/ChunkedOutputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/ChunkedOutputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/net/www/http/HttpClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/HttpClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveCache.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/net/www/http/KeepAliveStreamCleaner.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/http/KeepAliveStreamCleaner.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/ftp/FtpURLConnection.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/DigestAuthentication.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/InMemoryCookieStore.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/protocol/http/NegotiatorImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/NegotiatorImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/jar/URLJarFile.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/net/www/protocol/mailto/MailToURLConnection.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/mailto/MailToURLConnection.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2003 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/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/FileChannelImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/NativeThreadSet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -43,7 +43,7 @@
     //
     int add() {
         long th = NativeThread.current();
-        if (th <= 0)
+        if (th == -1)
             return -1;
         synchronized (this) {
             int start = 0;
--- a/jdk/src/share/classes/sun/nio/ch/Reflect.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/Reflect.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/SocketAdaptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/ch/Util.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/ch/Util.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/cs/CharsetMapping.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/CharsetMapping.java	Mon Jul 07 09:11:55 2008 -0700
@@ -37,7 +37,7 @@
 
 public class CharsetMapping {
     public final static char UNMAPPABLE_DECODING = '\uFFFD';
-    public final static int  UNMAPPABLE_ENCODING = -1;
+    public final static int  UNMAPPABLE_ENCODING = 0xFFFD;
 
     char[] b2cSB;                //singlebyte b->c
     char[] b2cDB1;               //dobulebyte b->c /db1
@@ -109,9 +109,11 @@
     }
 
     public int encodeSurrogate(char hi, char lo) {
-        char c = (char)Character.toCodePoint(hi, lo);
+        int cp = Character.toCodePoint(hi, lo);
+        if (cp < 0x20000 || cp >= 0x30000)
+            return UNMAPPABLE_ENCODING;
         int end = c2bSupp.length / 2;
-        int i = Arrays.binarySearch(c2bSupp, 0, end, c);
+        int i = Arrays.binarySearch(c2bSupp, 0, end, (char)cp);
         if (i >= 0)
             return c2bSupp[end + i];
         return UNMAPPABLE_ENCODING;
--- a/jdk/src/share/classes/sun/nio/cs/UTF_8.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/UTF_8.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/ExtendedCharsets.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/nio/cs/ext/SJIS_0213.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/nio/cs/ext/SJIS_0213.java	Mon Jul 07 09:11:55 2008 -0700
@@ -274,15 +274,15 @@
                         leftoverBase = c;
                     } else {
                         db = encodeChar(c);
-                        if (db > MAX_SINGLEBYTE) {      // DoubleByte
+                        if (db <= MAX_SINGLEBYTE) {      // SingleByte
+                            if (dl <= dp)
+                                return CoderResult.OVERFLOW;
+                            da[dp++] = (byte)db;
+                        } else if (db != UNMAPPABLE) {   // DoubleByte
                             if (dl - dp < 2)
                                 return CoderResult.OVERFLOW;
                             da[dp++] = (byte)(db >> 8);
                             da[dp++] = (byte)db;
-                        } else if (db != UNMAPPABLE) {  // SingleByte
-                            if (dl <= dp)
-                                return CoderResult.OVERFLOW;
-                            da[dp++] = (byte)db;
                         } else if (Character.isHighSurrogate(c)) {
                             if ((sp + 1) == sl)
                                 return CoderResult.UNDERFLOW;
@@ -297,6 +297,8 @@
                             da[dp++] = (byte)(db >> 8);
                             da[dp++] = (byte)db;
                             sp++;
+                        } else if (Character.isLowSurrogate(c)) {
+                            return CoderResult.malformedForLength(1);
                         } else {
                             return CoderResult.unmappableForLength(1);
                         }
@@ -337,15 +339,15 @@
                         leftoverBase = c;
                     } else {
                         db = encodeChar(c);
-                        if (db > MAX_SINGLEBYTE) {        // DoubleByte
+                        if (db <= MAX_SINGLEBYTE) {    // Single-byte
+                            if (dst.remaining() < 1)
+                                return CoderResult.OVERFLOW;
+                            dst.put((byte)db);
+                        } else if (db != UNMAPPABLE) {   // DoubleByte
                             if (dst.remaining() < 2)
                                 return CoderResult.OVERFLOW;
                             dst.put((byte)(db >> 8));
                             dst.put((byte)(db));
-                        } else if (db != UNMAPPABLE) {    // Single-byte
-                            if (dst.remaining() < 1)
-                                return CoderResult.OVERFLOW;
-                            dst.put((byte)db);
                         } else if (Character.isHighSurrogate(c)) {
                             if (!src.hasRemaining())     // Surrogates
                                 return CoderResult.UNDERFLOW;
@@ -360,6 +362,8 @@
                             dst.put((byte)(db >> 8));
                             dst.put((byte)(db));
                             mark++;
+                        } else if (Character.isLowSurrogate(c)) {
+                            return CoderResult.malformedForLength(1);
                         } else {
                             return CoderResult.unmappableForLength(1);
                         }
--- a/jdk/src/share/classes/sun/print/PSPathGraphics.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/print/PSPathGraphics.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/print/PSPrinterJob.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/print/RasterPrinterJob.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/print/RasterPrinterJob.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/print/ServiceDialog.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/print/ServiceDialog.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/reflect/ClassDefiner.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/reflect/ClassDefiner.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/reflect/MethodAccessorGenerator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/reflect/MethodAccessorGenerator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/reflect/ReflectionFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/reflect/ReflectionFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/reflect/misc/MethodUtil.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/reflect/misc/MethodUtil.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/log/ReliableLog.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/registry/RegistryImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/rmi/rmic/RemoteClass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/rmic/RemoteClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/rmic/newrmic/jrmp/RemoteClass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/rmic/newrmic/jrmp/RemoteClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/runtime/Log.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/runtime/Log.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2002 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/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/LoaderHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/MarshalInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2003 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/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 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/jdk/src/share/classes/sun/rmi/server/Util.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/Util.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/server/WeakClassHashMap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/DGCClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/transport/Target.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/Target.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/transport/Transport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/Transport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-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
--- a/jdk/src/share/classes/sun/rmi/transport/proxy/HttpSendSocket.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/proxy/HttpSendSocket.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2003 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/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/proxy/RMIMasterSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/rmi/transport/tcp/ConnectionMultiplexer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2003 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/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/GSSManagerImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/jgss/krb5/InitSecContextToken.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/krb5/Config.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/Config.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2000-2007 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/jdk/src/share/classes/sun/security/krb5/KrbTgsReq.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/KrbTgsReq.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/security/krb5/internal/ETypeInfo2.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/ETypeInfo2.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/krb5/internal/crypto/dk/AesDkCrypto.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/crypto/dk/AesDkCrypto.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/security/krb5/internal/crypto/dk/ArcFourCrypto.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/krb5/internal/crypto/dk/ArcFourCrypto.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/CipherSuite.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/ClientHandshaker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -32,6 +32,7 @@
 import java.util.*;
 
 import java.security.interfaces.ECPublicKey;
+import java.security.interfaces.RSAPublicKey;
 import java.security.spec.ECParameterSpec;
 
 import java.security.cert.X509Certificate;
@@ -147,8 +148,33 @@
         case HandshakeMessage.ht_server_key_exchange:
             serverKeyExchangeReceived = true;
             switch (keyExchange) {
-            case K_RSA:
             case K_RSA_EXPORT:
+                /**
+                 * The server key exchange message is sent by the server only
+                 * when the server certificate message does not contain the
+                 * proper amount of data to allow the client to exchange a
+                 * premaster secret, such as when RSA_EXPORT is used and the
+                 * public key in the server certificate is longer than 512 bits.
+                 */
+                if (serverKey == null) {
+                    throw new SSLProtocolException
+                        ("Server did not send certificate message");
+                }
+
+                if (!(serverKey instanceof RSAPublicKey)) {
+                    throw new SSLProtocolException("Protocol violation:" +
+                        " the certificate type must be appropriate for the" +
+                        " selected cipher suite's key exchange algorithm");
+                }
+
+                if (JsseJce.getRSAKeyLength(serverKey) <= 512) {
+                    throw new SSLProtocolException("Protocol violation:" +
+                        " server sent a server key exchange message for" +
+                        " key exchange " + keyExchange +
+                        " when the public key in the server certificate" +
+                        " is less than or equal to 512 bits in length");
+                }
+
                 try {
                     this.serverKeyExchange(new RSA_ServerKeyExchange(input));
                 } catch (GeneralSecurityException e) {
@@ -180,6 +206,9 @@
                     throwSSLException("Server key", e);
                 }
                 break;
+            case K_RSA:
+            case K_DH_RSA:
+            case K_DH_DSS:
             case K_ECDH_ECDSA:
             case K_ECDH_RSA:
                 throw new SSLProtocolException("Protocol violation: server sent"
@@ -580,6 +609,16 @@
 
         case K_RSA:
         case K_RSA_EXPORT:
+            if (serverKey == null) {
+                throw new SSLProtocolException
+                        ("Server did not send certificate message");
+            }
+
+            if (!(serverKey instanceof RSAPublicKey)) {
+                throw new SSLProtocolException
+                        ("Server certificate does not include an RSA key");
+            }
+
             /*
              * For RSA key exchange, we randomly generate a new
              * pre-master secret and encrypt it with the server's
@@ -588,8 +627,29 @@
              * it's a performance speedup not to do that until
              * the client's waiting for the server response, but
              * more of a speedup for the D-H case.
+             *
+             * If the RSA_EXPORT scheme is active, when the public
+             * key in the server certificate is less than or equal
+             * to 512 bits in length, use the cert's public key,
+             * otherwise, the ephemeral one.
              */
-            PublicKey key = (keyExchange == K_RSA) ? serverKey : ephemeralServerKey;
+            PublicKey key;
+            if (keyExchange == K_RSA) {
+                key = serverKey;
+            } else {    // K_RSA_EXPORT
+                if (JsseJce.getRSAKeyLength(serverKey) <= 512) {
+                    // extraneous ephemeralServerKey check done
+                    // above in processMessage()
+                    key = serverKey;
+                } else {
+                    if (ephemeralServerKey == null) {
+                        throw new SSLProtocolException("Server did not send" +
+                            " a RSA_EXPORT Server Key Exchange message");
+                    }
+                    key = ephemeralServerKey;
+                }
+            }
+
             m2 = new RSAClientKeyExchange(protocolVersion, maxProtocolVersion,
                                 sslContext.getSecureRandom(), key);
             break;
--- a/jdk/src/share/classes/sun/security/ssl/DHCrypt.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/DHCrypt.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/Handshaker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/InputRecord.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/InputRecord.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/JsseJce.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/JsseJce.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/jdk/src/share/classes/sun/security/ssl/OutputRecord.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/OutputRecord.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/ProtocolList.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SSLSessionImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/SessionId.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SessionId.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/tools/PolicyTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/tools/PolicyTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -4104,7 +4104,7 @@
                 "getClassLoader",
                 "setContextClassLoader",
                 "enableContextClassLoaderOverride",
-                "setSecurityManage",
+                "setSecurityManager",
                 "createSecurityManager",
                 "getenv.<" +
                     PolicyTool.rb.getString("environment variable name") + ">",
--- a/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/validator/EndEntityChecker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/x509/AVA.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/x509/AVA.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/classes/sun/security/x509/CertificatePolicySet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/x509/CertificatePolicySet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/security/x509/X509Cert.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/security/x509/X509Cert.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/swing/FilePane.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/swing/FilePane.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 
 /*
- * 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/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/swing/WindowsPlacesBar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/text/normalizer/VersionInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/text/normalizer/VersionInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions 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/jdk/src/share/classes/sun/tools/jar/JarVerifierStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jar/JarVerifierStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1996-2004 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/jdk/src/share/classes/sun/tools/jconsole/MBeansTab.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/MBeansTab.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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
@@ -37,6 +37,7 @@
 import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.tree.*;
+import sun.tools.jconsole.ProxyClient.SnapshotMBeanServerConnection;
 import sun.tools.jconsole.inspector.*;
 
 import com.sun.tools.jconsole.JConsoleContext;
@@ -154,6 +155,10 @@
         return vmPanel.getProxyClient().getMBeanServerConnection();
     }
 
+    public SnapshotMBeanServerConnection getSnapshotMBeanServerConnection() {
+        return vmPanel.getProxyClient().getSnapshotMBeanServerConnection();
+    }
+
     @Override
     public void update() {
         // Ping the connection to see if it is still alive. At
--- a/jdk/src/share/classes/sun/tools/jconsole/MemoryPoolStat.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/MemoryPoolStat.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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
@@ -28,7 +28,6 @@
 import com.sun.management.HotSpotDiagnosticMXBean;
 import com.sun.tools.jconsole.JConsoleContext;
 import com.sun.tools.jconsole.JConsoleContext.ConnectionState;
-import java.awt.Component;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeEvent;
 import java.io.IOException;
@@ -78,6 +77,7 @@
     private String advancedUrl = null;
 
     private JMXServiceURL jmxUrl = null;
+    private MBeanServerConnection mbsc = null;
     private SnapshotMBeanServerConnection server = null;
     private JMXConnector jmxc = null;
     private RMIServer stub = null;
@@ -103,7 +103,6 @@
 
     private List<MemoryPoolProxy>           memoryPoolProxies = null;
     private List<GarbageCollectorMXBean>    garbageCollectorMBeans = null;
-    private String detectDeadlocksOperation = null;
 
     final static private String HOTSPOT_DIAGNOSTIC_MXBEAN_NAME =
         "com.sun.management:type=HotSpotDiagnostic";
@@ -326,8 +325,8 @@
         if (jmxUrl == null && "localhost".equals(hostName) && port == 0) {
             // Monitor self
             this.jmxc = null;
-            this.server = Snapshot.newSnapshot(
-                    ManagementFactory.getPlatformMBeanServer());
+            this.mbsc = ManagementFactory.getPlatformMBeanServer();
+            this.server = Snapshot.newSnapshot(mbsc);
         } else {
             // Monitor another process
             if (lvm != null) {
@@ -369,7 +368,8 @@
                     this.jmxc = JMXConnectorFactory.connect(jmxUrl, env);
                 }
             }
-            this.server = Snapshot.newSnapshot(jmxc.getMBeanServerConnection());
+            this.mbsc = jmxc.getMBeanServerConnection();
+            this.server = Snapshot.newSnapshot(mbsc);
         }
         this.isDead = false;
 
@@ -518,7 +518,11 @@
         }
     }
 
-    public MBeanServerConnection getMBeanServerConnection() {
+   public MBeanServerConnection getMBeanServerConnection() {
+       return mbsc;
+   }
+
+    public SnapshotMBeanServerConnection getSnapshotMBeanServerConnection() {
         return server;
     }
 
--- a/jdk/src/share/classes/sun/tools/jconsole/VMPanel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/VMPanel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/OperationEntry.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/OperationEntry.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/TableSorter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/TableSorter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/ThreadDialog.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/ThreadDialog.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/classes/sun/tools/jconsole/inspector/Utils.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/Utils.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XDataViewer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XDataViewer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBean.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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
@@ -30,6 +30,7 @@
 import javax.swing.Icon;
 import sun.tools.jconsole.JConsole;
 import sun.tools.jconsole.MBeansTab;
+import sun.tools.jconsole.ProxyClient.SnapshotMBeanServerConnection;
 
 public class XMBean {
 
@@ -60,6 +61,10 @@
         return mbeansTab.getMBeanServerConnection();
     }
 
+    SnapshotMBeanServerConnection getSnapshotMBeanServerConnection() {
+        return mbeansTab.getSnapshotMBeanServerConnection();
+    }
+
     public Boolean isBroadcaster() {
         synchronized (broadcasterLock) {
             if (broadcaster == null) {
@@ -103,14 +108,14 @@
     public Object getAttribute(String attributeName)
             throws AttributeNotFoundException, InstanceNotFoundException,
             MBeanException, ReflectionException, IOException {
-        return getMBeanServerConnection().getAttribute(
+        return getSnapshotMBeanServerConnection().getAttribute(
                 getObjectName(), attributeName);
     }
 
     public AttributeList getAttributes(String attributeNames[])
             throws AttributeNotFoundException, InstanceNotFoundException,
             MBeanException, ReflectionException, IOException {
-        return getMBeanServerConnection().getAttributes(
+        return getSnapshotMBeanServerConnection().getAttributes(
                 getObjectName(), attributeNames);
     }
 
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanAttributes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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
@@ -349,7 +349,14 @@
 
         try {
             list = mbean.getAttributes(attributesInfo);
-        }catch(Exception e) {
+        } catch (Exception e) {
+            if (JConsole.isDebug()) {
+                System.err.println("Error calling getAttributes() on MBean \"" +
+                                   mbean.getObjectName() + "\". JConsole will " +
+                                   "try to get them individually calling " +
+                                   "getAttribute() instead. Exception:");
+                e.printStackTrace(System.err);
+            }
             list = new AttributeList();
             //Can't load all attributes, do it one after each other.
             for(int i = 0; i < attributesInfo.length; i++) {
@@ -357,7 +364,7 @@
                 try {
                     name = attributesInfo[i].getName();
                     Object value =
-                        mbean.getAttribute(name);
+                        mbean.getMBeanServerConnection().getAttribute(mbean.getObjectName(), name);
                     list.add(new Attribute(name, value));
                 }catch(Exception ex) {
                     if(attributesInfo[i].isReadable()) {
@@ -397,8 +404,8 @@
                             // went wrong.
                             try {
                                 Object v =
-                                    mbean.getAttribute(attributeInfo.
-                                                       getName());
+                                    mbean.getMBeanServerConnection().getAttribute(
+                                    mbean.getObjectName(), attributeInfo.getName());
                                 //What happens if now it is ok?
                                 // Be pragmatic, add it to readable...
                                 attributes.put(attributeInfo.getName(),
@@ -528,10 +535,8 @@
     }
 
      public void refreshAttributes() {
-         MBeanServerConnection mbsc = mbeansTab.getMBeanServerConnection();
-         if (mbsc instanceof SnapshotMBeanServerConnection) {
-             ((SnapshotMBeanServerConnection) mbsc).flush();
-         }
+         SnapshotMBeanServerConnection mbsc = mbeansTab.getSnapshotMBeanServerConnection();
+         mbsc.flush();
          stopCellEditing();
          loadAttributes(mbean, mbeanInfo);
      }
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanInfo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanInfo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanNotifications.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanNotifications.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanOperations.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XMBeanOperations.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XOperations.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XOperations.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlotter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlotter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XPlottingViewer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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
@@ -157,7 +157,7 @@
                             public void run() {
                                 try {
                                     Number n =
-                                        (Number) xmbean.getMBeanServerConnection().getAttribute(xmbean.getObjectName(), attributeName);
+                                        (Number) xmbean.getSnapshotMBeanServerConnection().getAttribute(xmbean.getObjectName(), attributeName);
                                     long v;
                                     if (n instanceof Float || n instanceof Double) {
                                         plotter.setDecimals(PLOTTER_DECIMALS);
--- a/jdk/src/share/classes/sun/tools/jconsole/inspector/XSheet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XSheet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XTable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XTable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XTextField.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XTextField.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XTextFieldEditor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XTextFieldEditor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/jdk/src/share/classes/sun/tools/jconsole/inspector/XTree.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/XTree.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/src/share/classes/sun/tools/native2ascii/N2AFilter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/classes/sun/tools/native2ascii/N2AFilter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/instrument/InvocationAdapter.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/InvocationAdapter.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/instrument/JPLISAgent.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/JPLISAgent.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/instrument/JPLISAgent.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/JPLISAgent.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/instrument/JarFacade.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/JarFacade.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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/jdk/src/share/instrument/Reentrancy.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/Reentrancy.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/instrument/Utilities.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/instrument/Utilities.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/javavm/export/jvm.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/javavm/export/jvm.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/java/io/io_util.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/java/io/io_util.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/share/native/java/lang/System.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/java/lang/System.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -84,7 +84,7 @@
 #define VENDOR_URL_BUG "http://java.sun.com/cgi-bin/bugreport.cgi"
 #endif
 
-#define JAVA_MAX_SUPPORTED_VERSION 50
+#define JAVA_MAX_SUPPORTED_VERSION 51
 #define JAVA_MAX_SUPPORTED_MINOR_VERSION 0
 
 JNIEXPORT jobject JNICALL
--- a/jdk/src/share/native/java/net/net_util.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/java/net/net_util.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/AlphaMacros.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/AlphaMacros.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/ByteGray.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/ByteGray.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/FourByteAbgr.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/FourByteAbgr.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/FourByteAbgrPre.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/FourByteAbgrPre.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/Index12Gray.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Index12Gray.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/native/sun/java2d/loops/Index8Gray.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Index8Gray.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/share/native/sun/java2d/loops/IntArgb.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntArgb.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/IntArgbBm.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntArgbBm.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/IntArgbPre.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntArgbPre.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/IntBgr.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntBgr.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/IntRgb.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntRgb.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/IntRgbx.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/IntRgbx.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/LoopMacros.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/LoopMacros.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/ThreeByteBgr.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/ThreeByteBgr.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/Ushort4444Argb.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Ushort4444Argb.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/Ushort555Rgb.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Ushort555Rgb.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/Ushort555Rgbx.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Ushort555Rgbx.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/Ushort565Rgb.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/Ushort565Rgb.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/native/sun/java2d/loops/UshortGray.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/native/sun/java2d/loops/UshortGray.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/share/sample/vm/clr-jvm/Makefile	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/sample/vm/clr-jvm/Makefile	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 2006-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
--- a/jdk/src/share/sample/vm/clr-jvm/invoker.cs	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/sample/vm/clr-jvm/invoker.cs	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-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
--- a/jdk/src/share/sample/vm/jvm-clr/invoked.cs	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/share/sample/vm/jvm-clr/invoked.cs	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-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
--- a/jdk/src/solaris/bin/java_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/bin/java_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/java/io/FileDescriptor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/java/io/FileDescriptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/solaris/classes/java/lang/ProcessImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/java/lang/ProcessImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/java/net/PlainSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/java/net/PlainSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/java/util/prefs/FileSystemPreferences.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XKeyboardFocusManagerPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/sun/awt/X11/XScrollbar.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XScrollbar.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsConfig.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsDevice.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/awt/motif/MDialogPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MDialogPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/solaris/classes/sun/awt/motif/MEmbeddedFramePeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MEmbeddedFramePeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/awt/motif/MFramePeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MFramePeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2004 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/solaris/classes/sun/awt/motif/MWindowPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/awt/motif/MWindowPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/nio/ch/DevPollArrayWrapper.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/nio/ch/NativeThread.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/nio/ch/NativeThread.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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
@@ -34,14 +34,14 @@
 // upon which Java threads are built, and defines a simple signal mechanism
 // that can be used to release a native thread from a blocking I/O operation.
 // On systems that do not require this type of signalling, the current() method
-// always returns zero and the signal(long) method has no effect.
+// always returns -1 and the signal(long) method has no effect.
 
 
 class NativeThread {
 
     // Returns an opaque token representing the native thread underlying the
     // invoking Java thread.  On systems that do not require signalling, this
-    // method always returns zero.
+    // method always returns -1.
     //
     static native long current();
 
--- a/jdk/src/solaris/classes/sun/print/AttributeClass.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/print/AttributeClass.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/print/CUPSPrinter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/print/CUPSPrinter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/sun/print/IPPPrintService.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/print/IPPPrintService.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/print/UnixPrintJob.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/classes/sun/security/provider/NativePRNG.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/classes/sun/security/provider/NativePRNG.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/hpi/native_threads/src/sys_api_td.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/hpi/native_threads/src/sys_api_td.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/hpi/src/linker_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/hpi/src/linker_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1994-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1994-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -51,15 +51,6 @@
 sys_mon_t _dl_lock;
 
 /*
- * glibc-2.0 libdl is not MT safe.  If you are building with any glibc,
- * chances are you might want to run the generated bits against glibc-2.0
- * libdl.so, so always use locking for any version of glibc.
- */
-#ifdef __GLIBC__
-    #define NEED_DL_LOCK
-#endif
-
-/*
  * Solaris green threads needs to lock around libdl.so.
  */
 #if defined(__solaris__) && !defined(NATIVE)
--- a/jdk/src/solaris/native/java/io/FileOutputStream_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/io/FileOutputStream_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/java/io/UnixFileSystem_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/io/UnixFileSystem_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -58,70 +58,6 @@
                                   "path", "Ljava/lang/String;");
 }
 
-
-/* -- Large-file support -- */
-
-/* LINUX_FIXME: ifdef __solaris__ here is wrong.  We need to move the
- * definition of stat64 into a solaris_largefile.h and create a
- * linux_largefile.h with a good stat64 structure to compile on
- * glibc2.0 based systems.
- */
-#if defined(__solaris__) && !defined(_LFS_LARGEFILE) || !_LFS_LARGEFILE
-
-/* The stat64 structure must be provided for systems without large-file support
-   (e.g., Solaris 2.5.1).  These definitions are copied from the Solaris 2.6
-   <sys/stat.h> and <sys/types.h> files.
- */
-
-typedef longlong_t      off64_t;        /* offsets within files */
-typedef u_longlong_t    ino64_t;        /* expanded inode type  */
-typedef longlong_t      blkcnt64_t;     /* count of file blocks */
-
-struct  stat64 {
-        dev_t   st_dev;
-        long    st_pad1[3];
-        ino64_t st_ino;
-        mode_t  st_mode;
-        nlink_t st_nlink;
-        uid_t   st_uid;
-        gid_t   st_gid;
-        dev_t   st_rdev;
-        long    st_pad2[2];
-        off64_t st_size;
-        timestruc_t st_atim;
-        timestruc_t st_mtim;
-        timestruc_t st_ctim;
-        long    st_blksize;
-        blkcnt64_t st_blocks;
-        char    st_fstype[_ST_FSTYPSZ];
-        long    st_pad4[8];
-};
-
-#endif  /* !_LFS_LARGEFILE */
-
-typedef int (*STAT64)(const char *, struct stat64 *);
-
-#if defined(__linux__) && defined(_LARGEFILE64_SOURCE)
-static STAT64 stat64_ptr = &stat64;
-#else
-static STAT64 stat64_ptr = NULL;
-#endif
-
-#ifndef __linux__
-#ifdef __GNUC__
-static void init64IO(void) __attribute__((constructor));
-#else
-#pragma init(init64IO)
-#endif
-#endif
-
-static void init64IO(void) {
-    void *handle = dlopen(0, RTLD_LAZY);
-    stat64_ptr = (STAT64) dlsym(handle, "_stat64");
-    dlclose(handle);
-}
-
-
 /* -- Path operations -- */
 
 extern int canonicalize(char *path, const char *out, int len);
@@ -151,18 +87,10 @@
 static jboolean
 statMode(const char *path, int *mode)
 {
-    if (stat64_ptr) {
-        struct stat64 sb;
-        if (((*stat64_ptr)(path, &sb)) == 0) {
-            *mode = sb.st_mode;
-            return JNI_TRUE;
-        }
-    } else {
-        struct stat sb;
-        if (stat(path, &sb) == 0) {
-            *mode = sb.st_mode;
-            return JNI_TRUE;
-        }
+    struct stat64 sb;
+    if (stat64(path, &sb) == 0) {
+        *mode = sb.st_mode;
+        return JNI_TRUE;
     }
     return JNI_FALSE;
 }
@@ -266,16 +194,9 @@
     jlong rv = 0;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        if (stat64_ptr) {
-            struct stat64 sb;
-            if (((*stat64_ptr)(path, &sb)) == 0) {
-                rv = 1000 * (jlong)sb.st_mtime;
-            }
-        } else {
-            struct stat sb;
-            if (stat(path, &sb) == 0) {
-                rv = 1000 * (jlong)sb.st_mtime;
-            }
+        struct stat64 sb;
+        if (stat64(path, &sb) == 0) {
+            rv = 1000 * (jlong)sb.st_mtime;
         }
     } END_PLATFORM_STRING(env, path);
     return rv;
@@ -289,16 +210,9 @@
     jlong rv = 0;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        if (stat64_ptr) {
-            struct stat64 sb;
-            if (((*stat64_ptr)(path, &sb)) == 0) {
-                rv = sb.st_size;
-            }
-        } else {
-            struct stat sb;
-            if (stat(path, &sb) == 0) {
-                rv = sb.st_size;
-            }
+        struct stat64 sb;
+        if (stat64(path, &sb) == 0) {
+            rv = sb.st_size;
         }
     } END_PLATFORM_STRING(env, path);
     return rv;
@@ -447,15 +361,6 @@
     return rv;
 }
 
-
-/* Bug in solaris /usr/include/sys/time.h? */
-#ifdef __solaris__
-extern int utimes(const char *, const struct timeval *);
-#elif defined(__linux___)
-extern int utimes(const char *, struct timeval *);
-#endif
-
-
 JNIEXPORT jboolean JNICALL
 Java_java_io_UnixFileSystem_setLastModifiedTime(JNIEnv *env, jobject this,
                                                 jobject file, jlong time)
@@ -463,47 +368,22 @@
     jboolean rv = JNI_FALSE;
 
     WITH_FIELD_PLATFORM_STRING(env, file, ids.path, path) {
-        struct timeval tv[2];
-#ifdef __solaris__
-        timestruc_t ts;
+        struct stat64 sb;
 
-        if (stat64_ptr) {
-            struct stat64 sb;
-            if (((*stat64_ptr)(path, &sb)) == 0)
-                ts = sb.st_atim;
-            else
-                goto error;
-        } else {
-            struct stat sb;
-            if (stat(path, &sb) == 0)
-                ts = sb.st_atim;
-            else
-                goto error;
-        }
-#endif
+        if (stat64(path, &sb) == 0) {
+            struct timeval tv[2];
 
-        /* Preserve access time */
-#ifdef __linux__
-        struct stat sb;
+            /* Preserve access time */
+            tv[0].tv_sec = sb.st_atime;
+            tv[0].tv_usec = 0;
 
-        if (stat(path, &sb) == 0) {
+            /* Change last-modified time */
+            tv[1].tv_sec = time / 1000;
+            tv[1].tv_usec = (time % 1000) * 1000;
 
-        tv[0].tv_sec = sb.st_atime;
-        tv[0].tv_usec = 0;
+            if (utimes(path, tv) == 0)
+                rv = JNI_TRUE;
         }
-#else
-        tv[0].tv_sec = ts.tv_sec;
-        tv[0].tv_usec = ts.tv_nsec / 1000;
-#endif
-
-        /* Change last-modified time */
-        tv[1].tv_sec = time / 1000;
-        tv[1].tv_usec = (time % 1000) * 1000;
-
-        if (utimes(path, tv) >= 0)
-            rv = JNI_TRUE;
-
-    error: ;
     } END_PLATFORM_STRING(env, path);
 
     return rv;
--- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -138,7 +138,6 @@
 Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
                                                 jstring host) {
     const char *hostname;
-    jobject name;
     jobjectArray ret = 0;
     struct hostent res, *hp = 0;
     char buf[HENT_BUF_SIZE];
@@ -210,12 +209,6 @@
             addrp++;
         }
 
-        name = (*env)->NewStringUTF(env, hostname);
-
-        if (IS_NULL(name)) {
-          goto cleanupAndReturn;
-        }
-
         ret = (*env)->NewObjectArray(env, i, ni_iacls, NULL);
         if (IS_NULL(ret)) {
             /* we may have memory to free at the end of this */
@@ -231,7 +224,7 @@
           }
           (*env)->SetIntField(env, iaObj, ni_iaaddressID,
                               ntohl((*addrp)->s_addr));
-          (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+          (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
           (*env)->SetObjectArrayElement(env, ret, i, iaObj);
           addrp++;
           i++;
--- a/jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/net/Inet6AddressImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -142,7 +142,6 @@
                                                 jstring host) {
     const char *hostname;
     jobjectArray ret = 0;
-    jobject name;
     int retLen = 0;
     jclass byteArrayCls;
     jboolean preferIPv6Address;
@@ -310,11 +309,6 @@
                 inet6Index = inetCount;
             }
 
-            name = (*env)->NewStringUTF(env, hostname);
-            if (IS_NULL(name)) {
-              ret = NULL;
-              goto cleanupAndReturn;
-            }
             while (iterator != NULL) {
               if (iterator->ai_family == AF_INET) {
                 jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
@@ -324,7 +318,7 @@
                 }
                 (*env)->SetIntField(env, iaObj, ni_iaaddressID,
                                     ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
-                (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+                (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
                 (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
                 inetIndex++;
               } else if (iterator->ai_family == AF_INET6) {
@@ -355,7 +349,7 @@
                   (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
                 }
                 (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
-                (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+                (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
                 (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
                 inet6Index++;
               }
--- a/jdk/src/solaris/native/java/net/NetworkInterface.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/net/NetworkInterface.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -1117,9 +1117,33 @@
   if (ioctl(sock, SIOCGIFFLAGS, (char *)&if2) >= 0) {
     ret = if2.ifr_flags;
   } else {
+#if defined(__solaris__) && defined(AF_INET6)
+    /* Try with an IPv6 socket in case the interface has only IPv6 addresses assigned to it */
+    struct lifreq lifr;
+
+    close(sock);
+    sock = JVM_Socket(AF_INET6, SOCK_DGRAM, 0);
+
+    if (sock < 0) {
+      (*env)->ReleaseStringUTFChars(env, name, name_utf);
+      NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
+                                  "Socket creation failed");
+      return -1;
+    }
+
+    memset((caddr_t)&lifr, 0, sizeof(lifr));
+    strcpy((caddr_t)&(lifr.lifr_name), name_utf);
+
+    if (ioctl(sock, SIOCGLIFFLAGS, (char *)&lifr) >= 0) {
+      ret = lifr.lifr_flags;
+    } else {
+      NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
+                               "IOCTL failed");
+    }
+#else
     NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
                                  "IOCTL failed");
-    ret = -1;
+#endif
   }
   close(sock);
   /* release the UTF string and interface list */
@@ -1484,8 +1508,23 @@
     if (ioctl(sock, SIOCGLIFMTU, (caddr_t)&lifr) >= 0) {
       ret = lifr.lifr_mtu;
     } else {
-      NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
-                                   "IOCTL failed");
+      /* Try wIth an IPv6 socket in case the interface has only IPv6 addresses assigned to it */
+      close(sock);
+      sock = JVM_Socket(AF_INET6, SOCK_DGRAM, 0);
+
+      if (sock < 0) {
+        (*env)->ReleaseStringUTFChars(env, name, name_utf);
+        NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
+                                     "Socket creation failed");
+        return -1;
+      }
+
+      if (ioctl(sock, SIOCGLIFMTU, (caddr_t)&lifr) >= 0) {
+        ret = lifr.lifr_mtu;
+      } else {
+        NET_ThrowByNameWithLastError(env, JNU_JAVANETPKG "SocketException",
+                                     "IOCTL failed");
+      }
     }
 #endif
     close(sock);
--- a/jdk/src/solaris/native/java/net/PlainSocketImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/java/net/PlainSocketImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -95,94 +95,24 @@
  */
 static int getMarkerFD()
 {
-    int server_fd, child_fd, connect_fd;
-    SOCKADDR him;
-    int type, len, port;
+    int sv[2];
 
-    type = AF_INET;
-#ifdef AF_INET6
-    if (ipv6_available()) {
-        type = AF_INET6;
+#ifdef AF_UNIX
+    if (socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1) {
+        return -1;
     }
+#else
+    return -1;
 #endif
 
     /*
-     * Create listener on any port
-     */
-    server_fd = JVM_Socket(type, SOCK_STREAM, 0);
-    if (server_fd < 0) {
-        return -1;
-    }
-    if (JVM_Listen(server_fd, 1) == -1) {
-        JVM_SocketClose(server_fd);
-        return -1;
-    }
-    len = SOCKADDR_LEN;
-    if (JVM_GetSockName(server_fd, (struct sockaddr *)&him, &len) == -1) {
-        JVM_SocketClose(server_fd);
-        return -1;
-    }
-    port = NET_GetPortFromSockaddr((struct sockaddr *)&him);
-
-    /*
-     * Establish connection from client socket.
-     * Server is bound to 0.0.0.0/X or ::/X
-     * We connect to 127.0.0.1/X or ::1/X
-     */
-#ifdef AF_INET6
-    if (ipv6_available()) {
-        struct sockaddr_in6 *him6 = (struct sockaddr_in6 *)&him;
-        jbyte caddr[16];
-        memset((char *) caddr, 0, 16);
-        caddr[15] = 1;
-        memset((char *)him6, 0, sizeof(struct sockaddr_in6));
-        memcpy((void *)&(him6->sin6_addr), caddr, sizeof(struct in6_addr) );
-        him6->sin6_port = htons((short) port);
-        him6->sin6_family = AF_INET6;
-        len = sizeof(struct sockaddr_in6) ;
-    } else
-#endif /* AF_INET6 */
-    {
-        struct sockaddr_in *him4 = (struct sockaddr_in*)&him;
-        memset((char *) him4, 0, sizeof(struct sockaddr_in));
-        him4->sin_port = htons((short) port);
-        him4->sin_addr.s_addr = (uint32_t) htonl(0x7f000001);
-        him4->sin_family = AF_INET;
-        len = sizeof(struct sockaddr_in);
-    }
-    connect_fd = JVM_Socket(type, SOCK_STREAM, 0);
-    if (connect_fd < 0) {
-        JVM_SocketClose(server_fd);
-        return -1;
-    }
-    if (JVM_Connect(connect_fd, (struct sockaddr *) &him, len) == -1) {
-        JVM_SocketClose(server_fd);
-        JVM_SocketClose(connect_fd);
-        return -1;
-    }
-
-    /*
-     * Server accepts connection - do in in non-blocking mode to avoid
-     * hanging if there's an error (should never happen!!!)
-     */
-    SET_NONBLOCKING(server_fd);
-    len = SOCKADDR_LEN;
-    child_fd = JVM_Accept(server_fd, (struct sockaddr *)&him, (jint *)&len);
-    if (child_fd == -1) {
-        JVM_SocketClose(server_fd);
-        JVM_SocketClose(connect_fd);
-        return -1;
-    }
-
-    /*
-     * Finally shutdown connect_fd (any reads to this fd will get
+     * Finally shutdown sv[0] (any reads to this fd will get
      * EOF; any writes will get an error).
      */
-    JVM_SocketShutdown(connect_fd, 2);
-    JVM_SocketClose(child_fd);
-    JVM_SocketClose(server_fd);
+    JVM_SocketShutdown(sv[0], 2);
+    JVM_SocketClose(sv[1]);
 
-    return connect_fd;
+    return sv[0];
 }
 
 
@@ -1087,7 +1017,7 @@
      */
     if (cmd == java_net_SocketOptions_SO_BINDADDR) {
         SOCKADDR him;
-        int len = 0;
+        socklen_t len = 0;
         int port;
         jobject iaObj;
         jclass iaCntrClass;
--- a/jdk/src/solaris/native/sun/awt/MouseInfo.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/awt/MouseInfo.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/awt/gtk2_interface.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/awt/gtk2_interface.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/awt/splashscreen/splashscreen_sys.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/java2d/loops/vis_FourByteAbgr.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_FourByteAbgr.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/java2d/loops/vis_FourByteAbgrPre.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_FourByteAbgrPre.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgb.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgb.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgbPre.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/java2d/loops/vis_IntArgbPre.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/nio/ch/FileChannelImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Portions Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
+ * Portions Copyright 2003-2008 Sun Microsystems, Inc.  All Rights Reserved.
  */
 
 /* Copyright  (c) 2002 Graz University of Technology. All rights reserved.
--- a/jdk/src/solaris/native/sun/xawt/XWindow.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/xawt/XWindow.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/bin/java_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/bin/java_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/java/io/FileDescriptor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/java/io/FileDescriptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/windows/classes/java/lang/ProcessImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/java/lang/ProcessImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * 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/jdk/src/windows/classes/java/net/DualStackPlainSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/java/net/DualStackPlainSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/java/net/PlainSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/java/net/TwoStacksPlainSocketImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/java/net/TwoStacksPlainSocketImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/Win32GraphicsEnvironment.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolder2.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -306,7 +306,7 @@
      * <code>java.io.File</code> instead. If not, then the object depends
      * on native PIDL state and should not be serialized.
      *
-     * @returns a <code>java.io.File</code> replacement object. If the folder
+     * @return a <code>java.io.File</code> replacement object. If the folder
      * is a not a normal directory, then returns the first non-removable
      * drive (normally "C:\").
      */
@@ -605,10 +605,10 @@
         // parent so we have an IShellFolder to query.
         long pIShellFolder = getIShellFolder();
         // Now we can enumerate the objects in this folder.
-        ArrayList list = new ArrayList();
+        ArrayList<Win32ShellFolder2> list = new ArrayList<Win32ShellFolder2>();
         long pEnumObjects = getEnumObjects(pIShellFolder, includeHiddenFiles);
         if (pEnumObjects != 0) {
-            long childPIDL = 0;
+            long childPIDL;
             int testedAttrs = ATTRIB_FILESYSTEM | ATTRIB_FILESYSANCESTOR;
             do {
                 if (Thread.currentThread().isInterrupted()) {
@@ -635,7 +635,7 @@
             } while (childPIDL != 0);
             releaseEnumObjects(pEnumObjects);
         }
-        return (ShellFolder[])list.toArray(new ShellFolder[list.size()]);
+        return list.toArray(new ShellFolder[list.size()]);
     }
 
 
@@ -648,7 +648,7 @@
         long pIShellFolder = getIShellFolder();
         long pEnumObjects =  getEnumObjects(pIShellFolder, true);
         Win32ShellFolder2 child = null;
-        long childPIDL = 0;
+        long childPIDL;
 
         while ((childPIDL = getNextChild(pEnumObjects)) != 0) {
             if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) {
@@ -983,7 +983,7 @@
                             ? SwingConstants.CENTER
                                 : SwingConstants.LEADING);
 
-                    column.setComparator(new ColumnComparator(i));
+                    column.setComparator(new ColumnComparator(getIShellFolder(), i));
 
                     notNullColumns.add(column);
                 }
@@ -1002,22 +1002,29 @@
 
     private native Object doGetColumnValue(long parentIShellFolder2, long childPIDL, int columnIdx);
 
-    private native int compareIDsByColumn(long pParentIShellFolder, long pidl1, long pidl2, int columnIdx);
+    private static native int compareIDsByColumn(long pParentIShellFolder, long pidl1, long pidl2, int columnIdx);
 
 
-    private class ColumnComparator implements Comparator {
+    public void sortChildren(List<? extends File> files) {
+        Collections.sort(files, new ColumnComparator(getIShellFolder(), 0));
+    }
+
+    private static class ColumnComparator implements Comparator<File> {
+        private final long parentIShellFolder;
+
         private final int columnIdx;
 
-        public ColumnComparator(int columnIdx) {
+        public ColumnComparator(long parentIShellFolder, int columnIdx) {
+            this.parentIShellFolder = parentIShellFolder;
             this.columnIdx = columnIdx;
         }
 
         // compares 2 objects within this folder by the specified column
-        public int compare(Object o, Object o1) {
+        public int compare(File o, File o1) {
             if (o instanceof Win32ShellFolder2
                     && o1 instanceof Win32ShellFolder2) {
                 // delegates comparison to native method
-                return compareIDsByColumn(getIShellFolder(),
+                return compareIDsByColumn(parentIShellFolder,
                         ((Win32ShellFolder2) o).getRelativePIDL(),
                         ((Win32ShellFolder2) o1).getRelativePIDL(),
                         columnIdx);
--- a/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/shell/Win32ShellFolderManager2.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -234,11 +234,11 @@
                         // Add third level for "My Computer"
                         if (folder.equals(drives)) {
                             File[] thirdLevelFolders = folder.listFiles();
-                            if (thirdLevelFolders != null) {
-                                Arrays.sort(thirdLevelFolders, driveComparator);
-                                for (File thirdLevelFolder : thirdLevelFolders) {
-                                    folders.add(thirdLevelFolder);
-                                }
+                            if (thirdLevelFolders != null && thirdLevelFolders.length > 0) {
+                                List<File> thirdLevelFoldersList = Arrays.asList(thirdLevelFolders);
+
+                                folder.sortChildren(thirdLevelFoldersList);
+                                folders.addAll(thirdLevelFoldersList);
                             }
                         }
                     }
@@ -362,27 +362,6 @@
         return false;
     }
 
-    private Comparator driveComparator = new Comparator() {
-        public int compare(Object o1, Object o2) {
-            Win32ShellFolder2 shellFolder1 = (Win32ShellFolder2) o1;
-            Win32ShellFolder2 shellFolder2 = (Win32ShellFolder2) o2;
-
-            // Put drives at first
-            boolean isDrive1 = shellFolder1.getPath().endsWith(":\\");
-
-            if (isDrive1 ^ shellFolder2.getPath().endsWith(":\\")) {
-                return isDrive1 ? -1 : 1;
-            } else {
-                return shellFolder1.getPath().compareTo(shellFolder2.getPath());
-            }
-        }
-    };
-
-
-    public void sortFiles(List files) {
-        Collections.sort(files, fileComparator);
-    }
-
     private static List topFolderList = null;
     static int compareShellFolders(Win32ShellFolder2 sf1, Win32ShellFolder2 sf2) {
         boolean special1 = sf1.isSpecial();
@@ -418,19 +397,9 @@
         return compareNames(sf1.getAbsolutePath(), sf2.getAbsolutePath());
     }
 
-    static int compareFiles(File f1, File f2) {
-        if (f1 instanceof Win32ShellFolder2) {
-            return f1.compareTo(f2);
-        }
-        if (f2 instanceof Win32ShellFolder2) {
-            return -1 * f2.compareTo(f1);
-        }
-        return compareNames(f1.getName(), f2.getName());
-    }
-
     static int compareNames(String name1, String name2) {
         // First ignore case when comparing
-        int diff = name1.toLowerCase().compareTo(name2.toLowerCase());
+        int diff = name1.compareToIgnoreCase(name2);
         if (diff != 0) {
             return diff;
         } else {
@@ -439,14 +408,4 @@
             return name1.compareTo(name2);
         }
     }
-
-    private Comparator fileComparator = new Comparator() {
-        public int compare(Object a, Object b) {
-            return compare((File)a, (File)b);
-        }
-
-        public int compare(File f1, File f2) {
-            return compareFiles(f1, f2);
-        }
-    };
 }
--- a/jdk/src/windows/classes/sun/awt/windows/WDataTransferer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WDataTransferer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WDialogPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WDialogPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WEmbeddedFramePeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WFramePeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WFramePeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/windows/classes/sun/awt/windows/WInputMethod.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WInputMethod.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPanelPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WWindowPeer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/nio/ch/NativeThread.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/nio/ch/NativeThread.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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,7 @@
 
 class NativeThread {
 
-    static long current() { return 0; }
+    static long current() { return -1; }
 
     static void signal(long nt) { }
 
--- a/jdk/src/windows/classes/sun/print/Win32PrintService.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/print/Win32PrintService.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/classes/sun/security/mscapi/SunMSCAPI.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/java/io/FileOutputStream_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/io/FileOutputStream_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/io/WinNTFileSystem_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -229,26 +229,29 @@
 JNICALL Java_java_io_WinNTFileSystem_checkAccess(JNIEnv *env, jobject this,
                                                  jobject file, jint access)
 {
-    jboolean rv = JNI_FALSE;
-    int mode;
+    DWORD attr;
     WCHAR *pathbuf = fileToNTPath(env, file, ids.path);
     if (pathbuf == NULL)
         return JNI_FALSE;
+    attr = GetFileAttributesW(pathbuf);
+    free(pathbuf);
+    if (attr == INVALID_FILE_ATTRIBUTES)
+        return JNI_FALSE;
     switch (access) {
     case java_io_FileSystem_ACCESS_READ:
     case java_io_FileSystem_ACCESS_EXECUTE:
-        mode = 4;
-        break;
+        return JNI_TRUE;
     case java_io_FileSystem_ACCESS_WRITE:
-        mode = 2;
-        break;
-    default: assert(0);
+        /* Read-only attribute ignored on directories */
+        if ((attr & FILE_ATTRIBUTE_DIRECTORY) ||
+            (attr & FILE_ATTRIBUTE_READONLY) == 0)
+            return JNI_TRUE;
+        else
+            return JNI_FALSE;
+    default:
+        assert(0);
+        return JNI_FALSE;
     }
-    if (_waccess(pathbuf, mode) == 0) {
-        rv = JNI_TRUE;
-    }
-    free(pathbuf);
-    return rv;
 }
 
 JNIEXPORT jboolean JNICALL
--- a/jdk/src/windows/native/java/io/io_util_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/io/io_util_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2007 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/jdk/src/windows/native/java/io/io_util_md.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/io/io_util_md.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/java/lang/ProcessImpl_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/lang/ProcessImpl_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/java/lang/java_props_md.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/lang/java_props_md.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/java/net/Inet4AddressImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/net/Inet4AddressImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -137,7 +137,6 @@
 Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
                                                 jstring host) {
     const char *hostname;
-    jobject name;
     struct hostent *hp;
     unsigned int addr[4];
 
@@ -229,10 +228,6 @@
             addrp++;
         }
 
-        name = (*env)->NewStringUTF(env, hostname);
-        if (IS_NULL(name)) {
-          goto cleanupAndReturn;
-        }
         ret = (*env)->NewObjectArray(env, i, ni_iacls, NULL);
 
         if (IS_NULL(ret)) {
@@ -249,7 +244,7 @@
           }
           (*env)->SetIntField(env, iaObj, ni_iaaddressID,
                               ntohl((*addrp)->s_addr));
-          (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+          (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
           (*env)->SetObjectArrayElement(env, ret, i, iaObj);
           addrp++;
           i++;
--- a/jdk/src/windows/native/java/net/Inet6AddressImpl.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/java/net/Inet6AddressImpl.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -86,7 +86,6 @@
 Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
                                                 jstring host) {
     const char *hostname;
-    jobject name;
     jobjectArray ret = 0;
     int retLen = 0;
     jboolean preferIPv6Address;
@@ -237,12 +236,6 @@
                 inet6Index = inetCount;
             }
 
-            name = (*env)->NewStringUTF(env, hostname);
-            if (IS_NULL(name)) {
-              ret = NULL;
-              goto cleanupAndReturn;
-            }
-
             while (iterator != NULL) {
                 if (iterator->ai_family == AF_INET) {
                   jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
@@ -252,7 +245,7 @@
                   }
                   (*env)->SetIntField(env, iaObj, ni_iaaddressID,
                                       ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
-                  (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+                  (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
                   (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
                     inetIndex ++;
                 } else if (iterator->ai_family == AF_INET6) {
@@ -276,7 +269,7 @@
                     (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
                   }
                   (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
-                  (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
+                  (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
                   (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
                   inet6Index ++;
                 }
--- a/jdk/src/windows/native/sun/net/www/protocol/http/NTLMAuthSequence.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/sun/net/www/protocol/http/NTLMAuthSequence.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/sun/security/krb5/NativeCreds.c	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/sun/security/krb5/NativeCreds.c	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/src/windows/native/sun/windows/awt_Component.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Component.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/src/windows/native/sun/windows/awt_TrayIcon.h	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.h	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/com/sun/crypto/provider/KeyFactory/TestProviderLeak.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/DumpHeap.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/GetDiagnosticOptions.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/GetVMOption.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/com/sun/management/HotSpotDiagnosticMXBean/SetVMOption.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Component/isLightweightCrash/IsLightweightCrash.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Component/isLightweightCrash/StubPeerCrash.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Focus/RestoreFocusOnDisabledComponentTest/RestoreFocusOnDisabledComponentTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Mixing/ValidBounds.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Mixing/ValidBounds.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Modal/WsDisabledStyle/CloseBlocker/CloseBlocker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Modal/WsDisabledStyle/OverBlocker/OverBlocker.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/Modal/WsDisabledStyle/Winkey/Winkey.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/event/MouseEvent/SmoothWheel/SmoothWheel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/awt/font/Threads/FontThread.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/awt/font/Threads/FontThread.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/beans/Introspector/Test4896879.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/beans/Introspector/Test4896879.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/test/java/beans/Introspector/Test4935607.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/beans/Introspector/Test4935607.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/beans/XMLEncoder/Test4935607.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/beans/XMLEncoder/Test4935607.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/XMLEncoder/java_io_File.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,47 @@
+/*
+ * 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 6708550
+ * @summary Tests File encoding
+ * @author Sergey Malenkov
+ */
+
+import java.io.File;
+
+public final class java_io_File extends AbstractTest<File> {
+    public static void main(String[] args) {
+        new java_io_File().test(true);
+    }
+
+    @Override
+    protected File getObject() {
+        return new File("test.txt"); // NON-NLS: local file
+    }
+
+    @Override
+    protected File getAnotherObject() {
+        return new File("/pub/demo/"); // NON-NLS: path
+    }
+}
--- a/jdk/test/java/io/File/SetLastModified.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/io/File/SetLastModified.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -22,11 +22,13 @@
  */
 
 /* @test
-   @bug 4091757
+   @bug 4091757 6652379
    @summary Basic test for setLastModified method
  */
 
 import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
 
 
 public class SetLastModified {
@@ -95,13 +97,24 @@
         if (f.setLastModified(nt))
             throw new Exception("Succeeded on non-existent file: " + f);
 
-        OutputStream o = new FileOutputStream(f);
-        o.write('x');
-        o.close();
-        ot = f.lastModified();
-        if (!f.setLastModified(nt))
-            throw new Exception("setLastModified failed on file: " + f);
-        ck(f, nt, f.lastModified());
+        // set/check last modified on files of size 1, 1GB+1, 2GB+1, ..
+        // On Windows we only test with a tiny file as that platform doesn't
+        // support sparse files by default and so the test takes too long.
+        final long G = 1024L * 1024L * 1024L;
+        final long MAX_POSITION =
+            System.getProperty("os.name").startsWith("Windows") ? 0L : 3L*G;
+        long pos = 0L;
+        while (pos <= MAX_POSITION) {
+            FileChannel fc = new FileOutputStream(f).getChannel();
+            fc.position(pos).write(ByteBuffer.wrap("x".getBytes()));
+            fc.close();
+            ot = f.lastModified();
+            System.out.format("check with file size: %d\n", f.length());
+            if (!f.setLastModified(nt))
+                throw new Exception("setLastModified failed on file: " + f);
+            ck(f, nt, f.lastModified());
+            pos += G;
+        }
 
         if (!f.delete()) throw new Exception("Can't delete test file " + f);
         if (!d2.delete()) throw new Exception("Can't delete test directory " + d2);
--- a/jdk/test/java/io/File/SetReadOnly.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/io/File/SetReadOnly.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -22,7 +22,7 @@
  */
 
 /* @test
-   @bug 4091757
+   @bug 4091757 4939819
    @summary Basic test for setReadOnly method
  */
 
@@ -59,8 +59,15 @@
             throw new Exception(f + ": Cannot create directory");
         if (!f.setReadOnly())
             throw new Exception(f + ": Failed on directory");
-        if (f.canWrite())
-            throw new Exception(f + ": Directory is writeable");
+        // The readonly attribute on Windows does not make a folder read-only
+        if (System.getProperty("os.name").startsWith("Windows")) {
+            if (!f.canWrite())
+                throw new Exception(f + ": Directory is not writeable");
+        } else {
+            if (f.canWrite())
+                throw new Exception(f + ": Directory is writeable");
+        }
+
         if (!f.delete())
             throw new Exception(f + ": Cannot delete directory");
 
--- a/jdk/test/java/io/FileOutputStream/AtomicAppend.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/io/FileOutputStream/AtomicAppend.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/ProcessBuilder/Basic.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/test/java/lang/System/Versions.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/System/Versions.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2005 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,7 +23,7 @@
 
 /**
  * @test
- * @bug 4989690 6259855
+ * @bug 4989690 6259855 6706299
  * @summary Check that version-related system property invariants hold.
  * @author Martin Buchholz
  */
--- a/jdk/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/BootClassPath/BootClassPathTest.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 2004-2005 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/jdk/test/java/lang/instrument/MakeJAR2.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/MakeJAR2.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# 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/jdk/test/java/lang/instrument/NativeMethodPrefixAgent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/NativeMethodPrefixAgent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/PremainClass/DummyMain.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/PremainClass/DummyMain.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/PremainClass/PremainClassTest.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/PremainClass/PremainClassTest.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/RetransformAgent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/RetransformAgent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/TransformerManagementThreadAddTests.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/TransformerManagementThreadAddTests.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/TransformerManagementThreadRemoveTests.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CircularityErrorTest.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/ClassUnloadTest.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/CommonSetup.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# 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/jdk/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/lang/instrument/appendToClassLoaderSearch/run_tests.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 #
-# 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/jdk/test/java/net/CookieHandler/CookieManagerTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/net/CookieHandler/CookieManagerTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/nio/Buffer/StringCharBufferSliceTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/nio/Buffer/StringCharBufferSliceTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/nio/channels/AsyncCloseAndInterrupt.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/nio/channels/AsyncCloseAndInterrupt.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 4460583 4470470 4840199 6419424
+ * @bug 4460583 4470470 4840199 6419424 6710579 6596323
  * @summary Comprehensive test of asynchronous closing and interruption
  * @author Mark Reinhold
  */
@@ -582,7 +582,7 @@
             log.println("WARNING: transferFrom/close not tested");
             return;
         }
-        if ((op == TRANSFER_TO) && TestUtil.onSolaris()) {
+        if ((op == TRANSFER_TO) && !TestUtil.onWindows()) {
             log.println("WARNING: transferTo/close not tested");
             return;
         }
--- a/jdk/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/nio/channels/SocketChannel/AsyncCloseChannel.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -22,7 +22,7 @@
  */
 
 /* @test
- * @bug 6285901
+ * @bug 6285901 6501089
  * @summary Check no data is written to wrong socket channel during async closing.
  * @author Xueming Shen
  */
@@ -33,13 +33,13 @@
 import java.net.*;
 
 public class AsyncCloseChannel {
-    static boolean failed = false;
-    static boolean keepGoing = true;
+    static volatile boolean failed = false;
+    static volatile boolean keepGoing = true;
+    static int maxAcceptCount = 100;
+    static volatile int acceptCount = 0;
     static String host = "127.0.0.1";
-    static int sensorPort = 3010;
-    static int targetPort = 3020;
-    static int maxAcceptCount = 1000;
-    static int acceptCount = 0;
+    static int sensorPort;
+    static int targetPort;
 
     public static void main(String args[]) throws Exception {
         if (System.getProperty("os.name").startsWith("Windows")) {
@@ -48,11 +48,15 @@
         }
         Thread ss = new SensorServer(); ss.start();
         Thread ts = new TargetServer(); ts.start();
+
+        sensorPort = ((ServerThread)ss).server.getLocalPort();
+        targetPort = ((ServerThread)ts).server.getLocalPort();
+
         Thread sc = new SensorClient(); sc.start();
         Thread tc = new TargetClient(); tc.start();
 
         while(acceptCount < maxAcceptCount && !failed) {
-            Thread.yield();
+            Thread.sleep(10);
         }
         keepGoing = false;
         try {
@@ -66,11 +70,8 @@
                                        + acceptCount + "> times of accept!");
     }
 
-
-    static class SensorServer extends ThreadEx {
+    static class SensorServer extends ServerThread {
         public void runEx() throws Exception {
-            ServerSocket server;
-            server = new ServerSocket(sensorPort);
             while(keepGoing) {
                 try {
                     final Socket s = server.accept();
@@ -80,7 +81,7 @@
                                 int c = s.getInputStream().read();
                                 if(c != -1) {
                                     // No data is ever written to the peer's socket!
-                                    System.out.println("Oops: read a character: "
+                                    System.err.println("Oops: read a character: "
                                                        + (char) c);
                                     failed = true;
                                 }
@@ -92,17 +93,14 @@
                         }
                     }.start();
                 } catch (IOException ex) {
-                    //ex.printStackTrace();
+                    System.err.println("Exception on sensor server " + ex.getMessage());
                 }
             }
         }
     }
 
-    static class TargetServer extends ThreadEx {
+    static class TargetServer extends ServerThread {
         public void runEx() throws Exception {
-
-            ServerSocket server;
-            server = new ServerSocket(targetPort);
             while (keepGoing) {
                 try {
                     final Socket s = server.accept();
@@ -127,7 +125,7 @@
                         }
                     }.start();
                 } catch (IOException ex) {
-                    //ex.printStackTrace();
+                    System.err.println("Exception on target server " + ex.getMessage());
                 }
             }
         }
@@ -142,19 +140,19 @@
                 try {
                     s = new Socket();
                     synchronized(this) {
-                        while(!wake) {
+                        while(!wake && keepGoing) {
                             try {
                                 wait();
                             } catch (InterruptedException ex) { }
                         }
+                        wake = false;
                     }
-                    wake = false;
                     s.connect(new InetSocketAddress(host, sensorPort));
                     try {
                         Thread.sleep(10);
                     } catch (InterruptedException ex) { }
                 } catch (IOException ex) {
-                    System.out.println("Exception on sensor client " + ex.getMessage());
+                    System.err.println("Exception on sensor client " + ex.getMessage());
                 } finally {
                     if(s != null) {
                         try {
@@ -200,26 +198,49 @@
                                 }
                             } catch (IOException ex) {
                                 if(!(ex instanceof ClosedChannelException))
-                                    System.out.println("Exception in target client child "
+                                    System.err.println("Exception in target client child "
                                                        + ex.toString());
                             }
                         }
                     };
                     t.start();
-                    while(!ready)
-                        Thread.yield();
+                    while(!ready && keepGoing) {
+                        try {
+                            Thread.sleep(10);
+                        } catch (InterruptedException ex) {}
+                    }
                     s.close();
                     SensorClient.wakeMe();
                     t.join();
                 } catch (IOException ex) {
-                     System.out.println("Exception in target client parent "
+                     System.err.println("Exception in target client parent "
                                         + ex.getMessage());
                 } catch (InterruptedException ex) {}
             }
         }
     }
 
-    static abstract class ThreadEx extends Thread {
+    static abstract class ServerThread extends Thread {
+        ServerSocket server;
+        public ServerThread() {
+            super();
+            try {
+                server = new ServerSocket(0);
+            } catch (IOException ex) {
+                ex.printStackTrace();
+            }
+        }
+
+        public void interrupt() {
+            super.interrupt();
+            if (server != null) {
+                try {
+                    server.close();
+                } catch (IOException ex) {
+                    ex.printStackTrace();
+                }
+            }
+        }
         public void run() {
             try {
                 runEx();
@@ -231,7 +252,6 @@
         abstract void runEx() throws Exception;
     }
 
-
     public static void closeIt(Socket s) {
         try {
             if(s != null)
--- a/jdk/test/java/nio/channels/TestUtil.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/nio/channels/TestUtil.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2001 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/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateMe.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2001 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/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ShutdownThread.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/MyActivationGroupImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ActivateMe.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/CanCreateStubs.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/ActivateMe.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/CallbackInterface.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/Callback_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/VMID/CheckVMID.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/VMID/CheckVMID.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/dgcAckFailure/DGCAckFailure_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2003 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/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/dgc/retryDirtyCalls/RetryDirtyCalls_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/altSecurityManager/TestSecurityManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/checkusage/CheckUsage.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/checkusage/CheckUsage.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/jdk/test/java/rmi/registry/classPathCodebase/Dummy.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/classPathCodebase/Dummy.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/emptyName/EmptyName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/emptyName/EmptyName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/interfaceHash/ReferenceRegistryStub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/registry/reexport/Reexport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/registry/reexport/Reexport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1999-2004 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BenchServer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BenchServerImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BooleanArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/BooleanCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ByteArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ByteCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/CharArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/CharCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ClassLoading.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/DoubleArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/DoubleCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ExceptionCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ExportObjs.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/FloatArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/FloatCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/IntArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/IntCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/LongArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/LongCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/NullCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ObjArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ObjTreeCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ProxyArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/RemoteObjArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ShortArrayCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/ShortCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/SmallObjTreeCalls.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/BooleanArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Booleans.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ByteArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Bytes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/CharArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Chars.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Chars.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ClassDesc.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Cons.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Cons.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/CustomDefaultObjTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/CustomObjTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/DoubleArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Doubles.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ExternObjTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/FloatArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Floats.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Floats.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/GetPutFieldTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/IntArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Ints.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Ints.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/LongArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Longs.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Longs.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ObjArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ObjTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ProxyArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ProxyClassDesc.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/RepeatObjs.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ReplaceTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/ShortArrays.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Shorts.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/SmallObjTrees.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/StreamBuffer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/benchmark/bench/serial/Strings.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/benchmark/bench/serial/Strings.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/Apple.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/Apple.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/AppleEvent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/AppleEvent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/AppleImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/AppleImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/AppleUser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/AppleUser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/ApplicationServer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/Orange.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/Orange.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/OrangeEcho.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/OrangeEcho.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/OrangeEchoImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/OrangeEchoImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/reliability/juicer/OrangeImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/reliability/juicer/OrangeImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressConstants.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/CompressOutputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/Echo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/EchoImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/MultiSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Compress.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/Hello.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/HelloImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressConstants.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressInputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/CompressOutputStream.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/Echo.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/EchoImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/MultiSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/changeHostName/ChangeHostName_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/Shutdown.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/ShutdownMonitor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport2_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/marshalAfterUnexport/MarshalAfterUnexport_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/Ping.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000 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/jdk/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/UnicastRemoteObject/useDynamicProxies/UseDynamicProxies_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshall.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/PoisonPill.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/RuntimeExceptionParameter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/SelfTerminator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- a/jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/marshalledObjectGet/MarshalledObjectGet_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/acceptLoop/CloseServerSocketOnTermination.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkFQDN/CheckFQDNClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkFQDN/TellServerName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkFQDN/TellServerName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeak.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 1998-2001 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/jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/LeaseLeakClient.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/dgcDeadLock/Test.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/dgcDeadLock/Test.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/dgcDeadLock/TestImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/dgcDeadLock/TestImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/dgcDeadLock/TestImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/pinLastArguments/PinLastArguments.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/pinLastArguments/PinLastArguments.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/readTimeout/ReadTimeoutTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/readTimeout/TestIface.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/readTimeout/TestIface.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/readTimeout/TestImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/readTimeout/TestImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/readTimeout/TestImpl_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/readTimeout/TestImpl_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2003 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/jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/rmi/transport/runtimeThreadInheritanceLeak/RuntimeThreadInheritanceLeak_Stub.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/util/concurrent/LinkedBlockingQueue/OfferRemoveLoops.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/java/util/concurrent/SynchronousQueue/Fairness.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/java/util/concurrent/SynchronousQueue/Fairness.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/CustomTypeTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,590 @@
+/*
+ * 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 %M% %I%
+ * @bug 6562936
+ * @run compile customtypes/package-info.java
+ * @run main CustomTypeTest
+ */
+
+import java.io.InvalidObjectException;
+import java.lang.management.ManagementFactory;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import javax.management.JMX;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.management.Descriptor;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.NotCompliantMBeanException;
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingClass;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.MXBeanMappingFactoryClass;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+
+import static javax.management.JMX.MBeanOptions;
+
+import customtypes.*;
+
+public class CustomTypeTest {
+    @MXBeanMappingClass(LinkedListMapping.class)
+    public static class LinkedList {
+        private final String name;
+        private final LinkedList next;
+
+        public LinkedList(String name, LinkedList next) {
+            this.name = name;
+            this.next = next;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public LinkedList getNext() {
+            return next;
+        }
+
+        public String toString() {
+            if (next == null)
+                return "(" + name + ")";
+            else
+                return "(" + name + " " + next + ")";
+        }
+
+        public boolean equals(Object x) {
+            if (!(x instanceof LinkedList))
+                return false;
+            LinkedList other = (LinkedList) x;
+            return (this.name.equals(other.name) &&
+                    (this.next == null ? other.next == null :
+                        this.next.equals(other.next)));
+        }
+    }
+
+    public static class LinkedListMapping extends MXBeanMapping {
+        public LinkedListMapping(Type type) throws OpenDataException {
+            super(LinkedList.class, ArrayType.getArrayType(SimpleType.STRING));
+            if (type != LinkedList.class) {
+                throw new OpenDataException("Mapping only valid for " +
+                        LinkedList.class);
+            }
+        }
+
+        public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+            String[] array = (String[]) openValue;
+            LinkedList list = null;
+            for (int i = array.length - 1; i >= 0; i--)
+                list = new LinkedList(array[i], list);
+            return list;
+        }
+
+        public Object toOpenValue(Object javaValue) throws OpenDataException {
+            ArrayList<String> array = new ArrayList<String>();
+            for (LinkedList list = (LinkedList) javaValue; list != null;
+                    list = list.getNext())
+                array.add(list.getName());
+            return array.toArray(new String[0]);
+        }
+    }
+
+    public static interface LinkedListMXBean {
+        public LinkedList getLinkedList();
+    }
+
+    public static class LinkedListImpl implements LinkedListMXBean {
+        public LinkedList getLinkedList() {
+            return new LinkedList("car", new LinkedList("cdr", null));
+        }
+    }
+
+    public static class ObjectMXBeanMapping extends MXBeanMapping {
+        private static final CompositeType wildcardType;
+
+        static {
+            try {
+                wildcardType =
+                    new CompositeType(Object.class.getName(),
+                                      "Wildcard type for Object",
+                                      new String[0],        // itemNames
+                                      new String[0],        // itemDescriptions
+                                      new OpenType<?>[0]);  // itemTypes
+            } catch (OpenDataException e) {
+                throw new RuntimeException(e);
+            }
+        }
+
+        public ObjectMXBeanMapping() {
+            super(Object.class, wildcardType);
+        }
+
+        public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+            if (!(openValue instanceof CompositeData)) {
+                throw new InvalidObjectException("Not a CompositeData: " +
+                        openValue.getClass());
+            }
+            CompositeData cd = (CompositeData) openValue;
+            if (!cd.containsKey("value")) {
+                throw new InvalidObjectException("CompositeData does not " +
+                        "contain a \"value\" item: " + cd);
+            }
+            Object x = cd.get("value");
+            if (!(x instanceof CompositeData || x instanceof TabularData ||
+                    x instanceof Object[]))
+                return x;
+
+            String typeName = (String) cd.get("type");
+            if (typeName == null) {
+                throw new InvalidObjectException("CompositeData does not " +
+                        "contain a \"type\" item: " + cd);
+            }
+            Class<?> c;
+            try {
+                c = Class.forName(typeName);
+            } catch (ClassNotFoundException e) {
+                InvalidObjectException ioe =
+                        new InvalidObjectException("Could not find type");
+                ioe.initCause(e);
+                throw ioe;
+            }
+            MXBeanMapping mapping;
+            try {
+                mapping = objectMappingFactory.mappingForType(c, objectMappingFactory);
+            } catch (OpenDataException e) {
+                InvalidObjectException ioe =
+                        new InvalidObjectException("Could not map object's " +
+                            "type " + c.getName());
+                ioe.initCause(e);
+                throw ioe;
+            }
+            return mapping.fromOpenValue(x);
+        }
+
+        public Object toOpenValue(Object javaValue) throws OpenDataException {
+            OpenType<?> openType;
+            Object openValue;
+            String typeName;
+            if (javaValue == null) {
+                openType = SimpleType.VOID;
+                openValue = null;
+                typeName = null;
+            } else {
+                Class<?> c = javaValue.getClass();
+                if (c.equals(Object.class))
+                    throw new OpenDataException("Cannot map Object to an open value");
+                MXBeanMapping mapping =
+                        objectMappingFactory.mappingForType(c, objectMappingFactory);
+                openType = mapping.getOpenType();
+                openValue = mapping.toOpenValue(javaValue);
+                typeName = c.getName();
+            }
+            CompositeType ct = new CompositeType(
+                    (javaValue == null) ? "null" : openType.getClassName(),
+                    "Open Mapping for Object",
+                    new String[] {"type", "value"},
+                    new String[] {"type", "value"},
+                    new OpenType<?>[] {SimpleType.STRING, openType});
+            return new CompositeDataSupport(
+                    ct,
+                    new String[] {"type", "value"},
+                    new Object[] {typeName, openValue});
+        }
+    }
+
+    public static class ObjectMappingFactory extends MXBeanMappingFactory {
+        private static MXBeanMapping objectMapping =
+                new ObjectMXBeanMapping();
+
+        @Override
+        public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+        throws OpenDataException {
+            if (t.equals(Object.class))
+                return objectMapping;
+            else
+                return MXBeanMappingFactory.DEFAULT.mappingForType(t, f);
+        }
+    }
+
+    private static MXBeanMappingFactory objectMappingFactory =
+            new ObjectMappingFactory();
+
+    public static interface ObjectMXBean {
+        public Object getObject();
+        public Object[] getObjects();
+        public List<Object> getObjectList();
+        public Object[][] getMoreObjects();
+    }
+
+    public static class ObjectImpl implements ObjectMXBean {
+        public Object getObject() {
+            return 123;
+        }
+
+        private static Object[] objects = {
+            "foo", 3, 3.14f, 3.14, 3L, new Date(), ObjectName.WILDCARD,
+            new byte[3], new char[3], new int[3][3],
+            new LinkedListImpl().getLinkedList(),
+        };
+
+        public Object[] getObjects() {
+            return objects;
+        }
+
+        public List<Object> getObjectList() {
+            return Arrays.asList(getObjects());
+        }
+
+        public Object[][] getMoreObjects() {
+            return new Object[][] {{getObjects()}};
+        }
+    }
+
+    @MXBeanMappingFactoryClass(ObjectMappingFactory.class)
+    public static interface AnnotatedObjectMXBean extends ObjectMXBean {}
+
+    public static class AnnotatedObjectImpl extends ObjectImpl
+            implements AnnotatedObjectMXBean {}
+
+    public static class BrokenMappingFactory extends MXBeanMappingFactory {
+        public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+        throws OpenDataException {
+            throw new OpenDataException(t.toString());
+        }
+    }
+
+    public static class ReallyBrokenMappingFactory extends BrokenMappingFactory {
+        public ReallyBrokenMappingFactory() {
+            throw new RuntimeException("Oops");
+        }
+    }
+
+    @MXBeanMappingFactoryClass(BrokenMappingFactory.class)
+    public static interface BrokenMXBean {
+        public int getX();
+    }
+
+    public static class BrokenImpl implements BrokenMXBean {
+        public int getX() {return 0;}
+    }
+
+    @MXBeanMappingFactoryClass(ReallyBrokenMappingFactory.class)
+    public static interface ReallyBrokenMXBean {
+        public int getX();
+    }
+
+    public static class ReallyBrokenImpl implements ReallyBrokenMXBean {
+        public int getX() {return 0;}
+    }
+
+    public static class BrokenMapping extends MXBeanMapping {
+        public BrokenMapping(Type t) {
+            super(t, SimpleType.STRING);
+            throw new RuntimeException("Oops");
+        }
+
+        public Object fromOpenValue(Object openValue) throws InvalidObjectException {
+            throw new AssertionError();
+        }
+
+        public Object toOpenValue(Object javaValue) throws OpenDataException {
+            throw new AssertionError();
+        }
+    }
+
+    @MXBeanMappingClass(BrokenMapping.class)
+    public static class BrokenType {}
+
+    public static interface BrokenTypeMXBean {
+        BrokenType getBroken();
+    }
+
+    public static class BrokenTypeImpl implements BrokenTypeMXBean {
+        public BrokenType getBroken() {
+            throw new AssertionError();
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+
+        System.out.println("Test @MXBeanMappingClass");
+        ObjectName linkedName = new ObjectName("d:type=LinkedList");
+        LinkedListMXBean linkedListMXBean = new LinkedListImpl();
+        LinkedList list1 = linkedListMXBean.getLinkedList();
+        mbs.registerMBean(linkedListMXBean, linkedName);
+        LinkedListMXBean linkedProxy =
+                JMX.newMXBeanProxy(mbs, linkedName, LinkedListMXBean.class);
+        MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+                Proxy.getInvocationHandler(linkedProxy);
+        if (!mbsih.isMXBean())
+            fail("not MXBean proxy");
+        LinkedList list2 = linkedProxy.getLinkedList();
+        if (list1 == list2)
+            fail("lists identical!");
+            // They should have gone through the mapping and back,
+            // and the mapping doesn't do anything that would allow it
+            // to restore the identical object.
+        if (!list1.equals(list2))
+            fail("lists different: " + list1 + " vs " + list2);
+        System.out.println("...success");
+
+        System.out.println("Test StandardMBean with MXBeanMappingFactory");
+        ObjectMXBean wildcardMBean = new ObjectImpl();
+        MBeanOptions options = new MBeanOptions();
+        options.setMXBeanMappingFactory(objectMappingFactory);
+        if (!options.isMXBean())
+            fail("Setting MXBeanMappingFactory should imply MXBean");
+        StandardMBean wildcardStandardMBean =
+                new StandardMBean(wildcardMBean, ObjectMXBean.class, options);
+        testWildcardMBean(mbs, wildcardMBean, wildcardStandardMBean,
+                          options, ObjectMXBean.class);
+
+        System.out.println("Test @MXBeanMappingFactoryClass on interface");
+        ObjectMXBean annotatedWildcardMBean = new AnnotatedObjectImpl();
+        testWildcardMBean(mbs, annotatedWildcardMBean, annotatedWildcardMBean,
+                          null, AnnotatedObjectMXBean.class);
+
+        System.out.println("Test @MXBeanMappingFactoryClass on package");
+        CustomMXBean custom = zeroProxy(CustomMXBean.class);
+        ObjectName customName = new ObjectName("d:type=Custom");
+        mbs.registerMBean(custom, customName);
+        Object x = mbs.getAttribute(customName, "X");
+        if (!(x instanceof String))
+            fail("Should be String: " + x + " (a " + x.getClass().getName() + ")");
+        CustomMXBean customProxy =
+                JMX.newMXBeanProxy(mbs, customName, CustomMXBean.class);
+        x = customProxy.getX();
+        if (!(x instanceof Integer) || (Integer) x != 0)
+            fail("Wrong return from proxy: " + x + " (a " + x.getClass().getName() + ")");
+
+        System.out.println("Test MXBeanMappingFactory exception");
+        try {
+            mbs.registerMBean(new BrokenImpl(), new ObjectName("d:type=Broken"));
+            fail("Register did not throw exception");
+        } catch (NotCompliantMBeanException e) {
+            System.out.println("...OK: threw: " + e);
+        }
+
+        System.out.println("Test MXBeanMappingFactory constructor exception");
+        try {
+            mbs.registerMBean(new ReallyBrokenImpl(), new ObjectName("d:type=Broken"));
+            fail("Register did not throw exception");
+        } catch (IllegalArgumentException e) {
+            System.out.println("...OK: threw: " + e);
+        }
+
+        System.out.println("Test MXBeanMappingFactory exception with StandardMBean");
+        MXBeanMappingFactory brokenF = new BrokenMappingFactory();
+        MBeanOptions brokenO = new MBeanOptions();
+        brokenO.setMXBeanMappingFactory(brokenF);
+        try {
+            new StandardMBean(wildcardMBean, ObjectMXBean.class, brokenO);
+            fail("StandardMBean with broken factory did not throw exception");
+        } catch (IllegalArgumentException e) {
+            if (!(e.getCause() instanceof NotCompliantMBeanException)) {
+                fail("StandardMBean with broken factory threw wrong exception: "
+                        + e.getCause());
+            }
+        }
+
+        System.out.println("Test MXBeanMappingClass exception");
+        try {
+            mbs.registerMBean(new BrokenTypeImpl(), new ObjectName("d:type=Broken"));
+            fail("Broken MXBeanMappingClass did not throw exception");
+        } catch (NotCompliantMBeanException e) {
+            System.out.println("...OK: threw: " + e);
+        }
+
+        if (failure == null)
+            System.out.println("TEST PASSED");
+        else
+            throw new Exception("TEST FAILED: " + failure);
+    }
+
+    private static void testWildcardMBean(MBeanServer mbs, ObjectMXBean impl,
+                                          Object mbean,
+                                          MBeanOptions proxyOptions,
+                                          Class<? extends ObjectMXBean> intf)
+    throws Exception {
+        ObjectName wildcardName = new ObjectName("d:type=Object");
+        mbs.registerMBean(mbean, wildcardName);
+        try {
+            testWildcardMBean2(mbs, impl, wildcardName, proxyOptions, intf);
+        } finally {
+            mbs.unregisterMBean(wildcardName);
+        }
+    }
+
+    private static void testWildcardMBean2(MBeanServer mbs, ObjectMXBean impl,
+                                           ObjectName wildcardName,
+                                           MBeanOptions proxyOptions,
+                                           Class<? extends ObjectMXBean> intf)
+    throws Exception {
+        if (proxyOptions == null) {
+            proxyOptions = new MBeanOptions();
+            MXBeanMappingFactory f = MXBeanMappingFactory.forInterface(intf);
+            proxyOptions.setMXBeanMappingFactory(f);
+        }
+        Descriptor d = mbs.getMBeanInfo(wildcardName).getDescriptor();
+        String factoryName = (String)
+                d.getFieldValue(JMX.MXBEAN_MAPPING_FACTORY_CLASS_FIELD);
+        if (!ObjectMappingFactory.class.getName().equals(factoryName)) {
+            fail("Descriptor has wrong MXBeanMappingFactory: " + factoryName +
+                    " should be " + ObjectMappingFactory.class.getName());
+        }
+        ObjectMXBean wildcardProxy =
+            JMX.newMBeanProxy(mbs, wildcardName, intf, proxyOptions);
+        MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
+                Proxy.getInvocationHandler(wildcardProxy);
+        MBeanOptions opts = mbsih.getMBeanOptions();
+        if (!opts.equals(proxyOptions)) {
+            fail("Proxy options differ from request: " + opts + " vs " +
+                    proxyOptions);
+        }
+        Method[] wildcardMethods = ObjectMXBean.class.getMethods();
+        for (Method m : wildcardMethods) {
+            System.out.println("..." + m.getName());
+            Object orig = m.invoke(impl);
+            Object copy = m.invoke(wildcardProxy);
+            if (!deepEquals(orig, copy)) {
+                fail("objects differ: " + deepToString(orig) + " vs " +
+                        deepToString(copy));
+            }
+        }
+    }
+
+    private static <T> T zeroProxy(Class<T> intf) {
+        return intf.cast(Proxy.newProxyInstance(intf.getClassLoader(),
+                new Class<?>[] {intf},
+                new ZeroInvocationHandler()));
+    }
+
+    private static class ZeroInvocationHandler implements InvocationHandler {
+        public Object invoke(Object proxy, Method method, Object[] args)
+        throws Throwable {
+            return 0;
+        }
+    }
+
+    private static boolean deepEquals(Object x, Object y) {
+        if (x == y)
+            return true;
+        if (x == null || y == null)
+            return false;
+
+        if (x instanceof Collection<?>) {
+            if (!(y instanceof Collection<?>))
+                return false;
+            Collection<?> xcoll = (Collection<?>) x;
+            Collection<?> ycoll = (Collection<?>) y;
+            if (xcoll.size() != ycoll.size())
+                return false;
+            Iterator<?> xit = xcoll.iterator();
+            Iterator<?> yit = ycoll.iterator();
+            while (xit.hasNext()) {
+                if (!deepEquals(xit.next(), yit.next()))
+                    return false;
+            }
+            return true;
+        }
+
+        Class<?> xclass = x.getClass();
+        Class<?> yclass = y.getClass();
+        if (xclass.isArray()) {
+            if (!yclass.isArray())
+                return false;
+            if (!xclass.getComponentType().equals(yclass.getComponentType()))
+                return false;
+            int len = Array.getLength(x);
+            if (Array.getLength(y) != len)
+                return false;
+            for (int i = 0; i < len; i++) {
+                if (!deepEquals(Array.get(x, i), Array.get(y, i)))
+                    return false;
+            }
+            return true;
+        }
+
+//        return x.equals(y);
+        if (x.equals(y))
+            return true;
+        System.out.println("Not equal: <" + x + "> and <" + y + ">");
+        return false;
+    }
+
+    private static String deepToString(Object x) {
+        if (x == null)
+            return "null";
+
+        if (x instanceof Collection<?>) {
+            Collection<?> xcoll = (Collection<?>) x;
+            StringBuilder sb = new StringBuilder("[");
+            for (Object e : xcoll) {
+                if (sb.length() > 1)
+                    sb.append(", ");
+                sb.append(deepToString(e));
+            }
+            sb.append("]");
+            return sb.toString();
+        }
+
+        if (x instanceof Object[]) {
+            Object[] xarr = (Object[]) x;
+            return deepToString(Arrays.asList(xarr));
+        }
+
+        if (x.getClass().isArray()) { // primitive array
+            String s = Arrays.deepToString(new Object[] {x});
+            return s.substring(1, s.length() - 1);
+        }
+
+        return x.toString();
+    }
+
+    private static void fail(String msg) {
+        System.out.println("TEST FAILED: " + msg);
+        if (msg.length() > 100)
+            msg = msg.substring(0, 100) + "...";
+        failure = msg;
+    }
+
+    private static String failure;
+}
--- a/jdk/test/javax/management/mxbean/JMXServiceURLTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/management/mxbean/JMXServiceURLTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/customtypes/CustomLongMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+// CustomLongMXBean.java - see CustomTypeTest
+
+package customtypes;
+
+import javax.management.openmbean.MXBeanMappingFactoryClass;
+
+@MXBeanMappingFactoryClass(IntegerIsLongFactory.class)
+public interface CustomLongMXBean extends CustomMXBean {}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/customtypes/CustomMXBean.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+
+// CustomMXBean.java - see CustomTypeTest
+
+package customtypes;
+
+public interface CustomMXBean {
+    public Integer getX();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/customtypes/IntegerIsLongFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,74 @@
+/*
+ * 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.
+ */
+
+// IntegerIsLongFactory.java - see CustomTypeTest
+
+package customtypes;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Type;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+public class IntegerIsLongFactory implements MXBeanMappingFactory {
+    public MXBeanMapping forType(Type t, MXBeanMappingFactory f)
+    throws OpenDataException {
+        if (t == Integer.class)
+            return IntegerIsLongMapping;
+        else
+            return MXBeanMappingFactory.DEFAULT.forType(t, f);
+    }
+
+    private static final MXBeanMapping IntegerIsLongMapping =
+            new IntegerIsLongMapping();
+
+    private static class IntegerIsLongMapping extends MXBeanMapping {
+        IntegerIsLongMapping() {
+            super(Integer.class, SimpleType.STRING);
+        }
+
+        public Object fromOpenValue(Object openValue)
+        throws InvalidObjectException {
+            try {
+                return (Long) openValue;
+            } catch (Exception e) {
+                InvalidObjectException ioe = new InvalidObjectException("oops");
+                ioe.initCause(e);
+                throw ioe;
+            }
+        }
+
+        public Object toOpenValue(Object javaValue) throws OpenDataException {
+            try {
+                Integer i = (Integer) javaValue;
+                return new Long((int) i);
+            } catch (Exception e) {
+                OpenDataException ode = new OpenDataException("oops");
+                ode.initCause(e);
+                throw ode;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/customtypes/IntegerIsStringFactory.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,76 @@
+/*
+ * 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.
+ */
+
+// IntegerIsStringFactory.java - see CustomTypeTest
+
+package customtypes;
+
+import java.io.InvalidObjectException;
+import java.lang.reflect.Type;
+import javax.management.openmbean.MXBeanMapping;
+import javax.management.openmbean.MXBeanMappingFactory;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.SimpleType;
+
+public class IntegerIsStringFactory extends MXBeanMappingFactory {
+    @Override
+    public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
+    throws OpenDataException {
+        if (t == Integer.class)
+            return integerIsStringMapping;
+        else
+            return MXBeanMappingFactory.DEFAULT.mappingForType(t, f);
+    }
+
+    private static final MXBeanMapping integerIsStringMapping =
+            new IntegerIsStringMapping();
+
+    private static class IntegerIsStringMapping extends MXBeanMapping {
+        IntegerIsStringMapping() {
+            super(Integer.class, SimpleType.STRING);
+        }
+
+        public Object fromOpenValue(Object openValue)
+        throws InvalidObjectException {
+            try {
+                String s = (String) openValue;
+                return Integer.parseInt(s);
+            } catch (Exception e) {
+                InvalidObjectException ioe = new InvalidObjectException("oops");
+                ioe.initCause(e);
+                throw ioe;
+            }
+        }
+
+        public Object toOpenValue(Object javaValue) throws OpenDataException {
+            try {
+                Integer i = (Integer) javaValue;
+                return i.toString();
+            } catch (Exception e) {
+                OpenDataException ode = new OpenDataException("oops");
+                ode.initCause(e);
+                throw ode;
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/customtypes/package-info.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,27 @@
+/*
+ * 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-info.java - test package annotations for custom types
+
+@javax.management.openmbean.MXBeanMappingFactoryClass(IntegerIsStringFactory.class)
+package customtypes;
--- a/jdk/test/javax/management/query/QueryExpStringTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/management/query/QueryExpStringTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -121,14 +121,14 @@
         eq, "(12345678) = (2.5)",
         between, "(12345678) between (2.5) and (2.5)",
         match, "attr like 'simpleString'",
-        initial, "attr like 'simpleString%'",
-        initialStar, "attr like '\\*%'",
-        initialPercent, "attr like '\\%%'",
-        any, "attr like '%simpleString%'",
-        anyStar, "attr like '%\\*%'",
-        anyPercent, "attr like '%\\%%'",
-        ffinal, "attr like '%simpleString'",
-        finalMagic, "attr like '%\\?\\*\\[\\\\'",
+        initial, "attr like 'simpleString*'",
+        initialStar, "attr like '\\**'",
+        initialPercent, "attr like '%*'",
+        any, "attr like '*simpleString*'",
+        anyStar, "attr like '*\\**'",
+        anyPercent, "attr like '*%*'",
+        ffinal, "attr like '*simpleString'",
+        finalMagic, "attr like '*\\?\\*\\[\\\\'",
         in, "12345678 in (12345678, 2.5)",
         and, "((12345678) > (2.5)) and ((12345678) < (2.5))",
         or, "((12345678) > (2.5)) or ((12345678) < (2.5))",
@@ -207,7 +207,6 @@
                                     exp + " like " + pat);
             }
             StringValueExp spat = (StringValueExp) pat;
-            spat = Query.value(translateMatch(spat.getValue()));
             return Query.match((AttributeValueExp) exp, spat);
         }
 
@@ -226,28 +225,6 @@
         throw new Exception("Expected in or like after expression");
     }
 
-    private static String translateMatch(String s) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < s.length(); i++) {  // logic not correct for wide chars
-            char c = s.charAt(i);
-            switch (c) {
-                case '\\':
-                    sb.append(c).append(s.charAt(++i)); break;
-                case '%':
-                    sb.append('*'); break;
-                case '_':
-                    sb.append('?'); break;
-                case '*':
-                    sb.append("\\*"); break;
-                case '?':
-                    sb.append("\\?"); break;
-                default:
-                    sb.append(c); break;
-            }
-        }
-        return sb.toString();
-    }
-
     private static QueryExp parseQueryAfterParen(String[] ss)
             throws Exception {
         /* This is very ugly.  We might have "(q1) and (q2)" here, or
--- a/jdk/test/javax/management/query/QueryNotifFilterTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/management/query/QueryNotifFilterTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/javax/management/query/QueryParseTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/management/query/QueryParseTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -347,30 +347,30 @@
 
         // LIKE
 
-        "A like 'b%m'",
+        "A like 'b*m'",
         expectTrue("blim"), expectTrue("bm"),
         expectFalse(""), expectFalse("blimmo"), expectFalse("mmm"),
 
-        "A not like 'b%m'",
+        "A not like 'b*m'",
         expectFalse("blim"), expectFalse("bm"),
         expectTrue(""), expectTrue("blimmo"), expectTrue("mmm"),
 
-        "A like 'b_m'",
+        "A like 'b?m'",
         expectTrue("bim"), expectFalse("blim"),
 
-        "A like '%can''t%'",
+        "A like '*can''t*'",
         expectTrue("can't"),
         expectTrue("I'm sorry Dave, I'm afraid I can't do that"),
         expectFalse("cant"), expectFalse("can''t"),
 
-        "A like '\\%%\\%'",
-        expectTrue("%blim%"), expectTrue("%%"),
-        expectFalse("blim"), expectFalse("%asdf"), expectFalse("asdf%"),
+        "A like '\\**\\*'",
+        expectTrue("*blim*"), expectTrue("**"),
+        expectFalse("blim"), expectFalse("*asdf"), expectFalse("asdf*"),
 
-        "A LIKE '*%?_'",
-        expectTrue("*blim?!"), expectTrue("*?_"),
-        expectFalse("blim"), expectFalse("blim?"),
-        expectFalse("?*"), expectFalse("??"), expectFalse(""), expectFalse("?"),
+        "A LIKE '%*_?'",
+        expectTrue("%blim_?"), expectTrue("%_?"), expectTrue("%blim_!"),
+        expectFalse("blim"), expectFalse("blim_"),
+        expectFalse("_%"), expectFalse("??"), expectFalse(""), expectFalse("?"),
 
         Query.toString(
                 Query.initialSubString(Query.attr("A"), Query.value("*?%_"))),
@@ -483,7 +483,7 @@
         // note the little {} at the end which means this is a subclass
         // and therefore QualifiedAttributeValue should return false.
 
-        MBeanServerDelegate.class.getName() + "#SpecificationName LIKE '%'",
+        MBeanServerDelegate.class.getName() + "#SpecificationName LIKE '*'",
         new Wrapped(new MBeanServerDelegate(), true),
         new Tester(new String[] {"SpecificationName"}, new Object[] {"JMX"}, false),
 
@@ -497,7 +497,7 @@
         "A.class.name = 'java.lang.String'",
         expectTrue("blim"), expectFalse(95), expectFalse((Object) null),
 
-        "A.canonicalName like 'JMImpl%:%'",
+        "A.canonicalName like 'JMImpl*:*'",
         expectTrue(MBeanServerDelegate.DELEGATE_NAME),
         expectFalse(ObjectName.WILDCARD),
 
@@ -544,12 +544,15 @@
         "a in b, c", "a in 23", "a in (2, 3", "a in (2, 3x)",
         "a like \"foo\"", "a like b", "a like 23",
         "like \"foo\"", "like b", "like 23", "like 'a:b'",
-        "5 like 'a'", "'a' like '%'",
+        "5 like 'a'", "'a' like '*'",
         "a not= b", "a not = b", "a not b", "a not b c",
         "a = +b", "a = +'b'", "a = +true", "a = -b", "a = -'b'",
         "a#5 = b", "a#'b' = c",
         "a instanceof b", "a instanceof 17", "a instanceof",
-        "a like 'oops\\'", "a like '[oops'",
+        // "a like 'oops\\'", "a like '[oops'",
+        // We don't check the above because Query.match doesn't.  If LIKE
+        // rejected bad patterns then there would be some QueryExp values
+        // that could not be converted to a string and back.
 
         // Check that -Long.MIN_VALUE is an illegal constant.  This is one more
         // than Long.MAX_VALUE and, like the Java language, we only allow it
--- a/jdk/test/javax/management/relation/RelationNotificationSeqNoTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/management/relation/RelationNotificationSeqNoTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/javax/swing/JFileChooser/4252173/bug4252173.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/javax/swing/JFileChooser/4252173/bug4252173.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JPopupMenu/6694823/bug6694823.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,122 @@
+/*
+ * 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 6694823
+ * @summary Checks that popup menu cannot be partially hidden
+ * by the task bar in applets.
+ * @author Mikhail Lapshin
+ * @run main bug6694823
+ */
+
+import javax.swing.*;
+import java.awt.*;
+import sun.awt.SunToolkit;
+
+public class bug6694823 {
+    private static JFrame frame;
+    private static JPopupMenu popup;
+    private static SunToolkit toolkit;
+    private static Insets screenInsets;
+
+    public static void main(String[] args) throws Exception {
+        toolkit = (SunToolkit) Toolkit.getDefaultToolkit();
+        SwingUtilities.invokeAndWait(new Runnable() {
+            public void run() {
+                createGui();
+            }
+        });
+
+        // Get screen insets
+        screenInsets = toolkit.getScreenInsets(frame.getGraphicsConfiguration());
+        if (screenInsets.bottom == 0) {
+            // This test is only for configurations with taskbar on the bottom
+            return;
+        }
+
+        // Show popup as if from a standalone application
+        // The popup should be able to overlap the task bar
+        showPopup(false);
+
+        // Emulate applet security restrictions
+        toolkit.realSync();
+        System.setSecurityManager(new SecurityManager());
+
+        // Show popup as if from an applet
+        // The popup shouldn't overlap the task bar. It should be shifted up.
+        showPopup(true);
+
+        toolkit.realSync();
+        System.out.println("Test passed!");
+        frame.dispose();
+    }
+
+    private static void createGui() {
+        frame = new JFrame();
+        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+        frame.setUndecorated(true);
+
+        popup = new JPopupMenu("Menu");
+        for (int i = 0; i < 7; i++) {
+            popup.add(new JMenuItem("MenuItem"));
+        }
+        JPanel panel = new JPanel();
+        panel.setComponentPopupMenu(popup);
+        frame.add(panel);
+
+        frame.setSize(200, 200);
+    }
+
+    private static void showPopup(final boolean shouldBeShifted) {
+        SwingUtilities.invokeLater(new Runnable() {
+            public void run() {
+                // Place frame just above the task bar
+                Dimension screenSize = toolkit.getScreenSize();
+                frame.setLocation(screenSize.width / 2,
+                        screenSize.height - frame.getHeight() - screenInsets.bottom);
+                frame.setVisible(true);
+
+                // Place popup over the task bar
+                Point frameLoc = frame.getLocationOnScreen();
+                int x = 0;
+                int y = frame.getHeight()
+                        - popup.getPreferredSize().height + screenInsets.bottom;
+                popup.show(frame, x, y);
+
+                if (shouldBeShifted) {
+                    if (popup.getLocationOnScreen()
+                            .equals(new Point(frameLoc.x, frameLoc.y + y))) {
+                        throw new RuntimeException("Popup is not shifted");
+                    }
+                } else {
+                    if (!popup.getLocationOnScreen()
+                            .equals(new Point(frameLoc.x, frameLoc.y + y))) {
+                        throw new RuntimeException("Popup is unexpectedly shifted");
+                    }
+                }
+                popup.setVisible(false);
+            }
+        });
+    }
+}
Binary file jdk/test/javax/swing/JSlider/4987336/box.gif has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JSlider/4987336/bug4987336.html	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,9 @@
+<html>
+<body>
+<applet  code="bug4987336.class" width=600 height=400></applet>
+There are four Sliders. Each of them has a label with animated gif (a cup of coffee)
+and a label with static image.
+
+Check that for every LAF animation works for all Sliders. 
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/swing/JSlider/4987336/bug4987336.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,120 @@
+/*
+ * 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
+   @bug 4987336
+   @summary JSlider doesn't show label's animated icon.
+   @author Pavel Porvatov
+   @run applet/manual=done bug4987336.html
+*/
+
+import javax.swing.*;
+import javax.swing.border.TitledBorder;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Hashtable;
+
+public class bug4987336 extends JApplet {
+    private static final String IMAGE_RES = "box.gif";
+
+    private static final String ANIM_IMAGE_RES = "cupanim.gif";
+
+    public void init() {
+        JPanel pnLafs = new JPanel();
+        pnLafs.setLayout(new BoxLayout(pnLafs, BoxLayout.Y_AXIS));
+
+        ButtonGroup group = new ButtonGroup();
+
+        pnLafs.setBorder(new TitledBorder("Available Lafs"));
+
+        for (UIManager.LookAndFeelInfo lafInfo : UIManager.getInstalledLookAndFeels()) {
+            LafRadioButton comp = new LafRadioButton(lafInfo);
+
+            pnLafs.add(comp);
+            group.add(comp);
+        }
+
+        JPanel pnContent = new JPanel();
+
+        pnContent.setLayout(new BoxLayout(pnContent, BoxLayout.Y_AXIS));
+
+        pnContent.add(pnLafs);
+        pnContent.add(createSlider(true, IMAGE_RES, IMAGE_RES, ANIM_IMAGE_RES, ANIM_IMAGE_RES));
+        pnContent.add(createSlider(false, IMAGE_RES, IMAGE_RES, ANIM_IMAGE_RES, ANIM_IMAGE_RES));
+        pnContent.add(createSlider(true, ANIM_IMAGE_RES, null, IMAGE_RES, IMAGE_RES));
+        pnContent.add(createSlider(false, ANIM_IMAGE_RES, null, IMAGE_RES, IMAGE_RES));
+
+        getContentPane().add(new JScrollPane(pnContent));
+    }
+
+    private static JSlider createSlider(boolean enabled,
+                                        String firstEnabledImage, String firstDisabledImage,
+                                        String secondEnabledImage, String secondDisabledImage) {
+        Hashtable<Integer, JComponent> dictionary = new Hashtable<Integer, JComponent>();
+
+        dictionary.put(0, createLabel(firstEnabledImage, firstDisabledImage));
+        dictionary.put(1, createLabel(secondEnabledImage, secondDisabledImage));
+
+        JSlider result = new JSlider(0, 1);
+
+        result.setLabelTable(dictionary);
+        result.setPaintLabels(true);
+        result.setEnabled(enabled);
+
+        return result;
+    }
+
+    private static JLabel createLabel(String enabledImage, String disabledImage) {
+        ImageIcon enabledIcon = enabledImage == null ? null :
+                new ImageIcon(bug4987336.class.getResource(enabledImage));
+
+        ImageIcon disabledIcon = disabledImage == null ? null :
+                new ImageIcon(bug4987336.class.getResource(disabledImage));
+
+        JLabel result = new JLabel(enabledImage == null && disabledImage == null ? "No image" : "Image",
+                enabledIcon, SwingConstants.LEFT);
+
+        result.setDisabledIcon(disabledIcon);
+
+        return result;
+    }
+
+    private class LafRadioButton extends JRadioButton {
+        public LafRadioButton(final UIManager.LookAndFeelInfo lafInfo) {
+            super(lafInfo.getName(), lafInfo.getName().equals(UIManager.getLookAndFeel().getName()));
+
+            addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    try {
+                        UIManager.setLookAndFeel(lafInfo.getClassName());
+
+                        SwingUtilities.updateComponentTreeUI(bug4987336.this);
+                    } catch (Exception ex) {
+                        // Ignore such errors
+                        System.out.println("Cannot set LAF " + lafInfo.getName());
+                    }
+                }
+            });
+        }
+    }
+}
Binary file jdk/test/javax/swing/JSlider/4987336/cupanim.gif has changed
--- a/jdk/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/java2d/cmm/ProfileOp/ReadProfileTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetClassInitializationTime.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetClassLoadingTime.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetInitializedClassCount.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetLoadedClassSize.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetMethodDataSize.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotClassLoadingMBean/GetUnloadedClassSize.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotRuntimeMBean/GetSafepointCount.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotRuntimeMBean/GetSafepointSyncTime.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotRuntimeMBean/GetTotalSafepointTime.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/management/HotspotThreadMBean/GetInternalThreads.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/net/www/http/ChunkedOutputStream/Test.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/net/www/http/ChunkedOutputStream/Test.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2007 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/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/security/krb5/TimeInCCache.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/security/krb5/TimeInCCache.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/ClientHandshaker/RSAExport.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,561 @@
+/*
+ * 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 6690018
+ * @summary RSAClientKeyExchange NullPointerException
+ */
+
+/*
+ * Certificates and key used in the test.
+ *
+ * TLS server certificate:
+ * server private key:
+ * -----BEGIN RSA PRIVATE KEY-----
+ * Proc-Type: 4,ENCRYPTED
+ * DEK-Info: DES-EDE3-CBC,97EC03A2D031B7BC
+ *
+ * 22wrD+DPv3VF8xg9xoeBqHzFnOVbTLQgVulzaCECDF4zWdxElYKy4yYyY6dMDehi
+ * XT77NTsq1J14zjJHPp2/U6B5OpZxnf97ZSD0ZC9/DDe/2gjW4fY1Lv0TVP0PdXnm
+ * cj84RaDiiSk/cERlFzFJ5L8ULMwxdOtYwXwZ4upITw2lT+8zDlBD2i3zZ4TcWrzE
+ * /su5Kpu+Mp3wthfGX+ZGga2T/NS8ZCKZE+gJDPKQZ/x34VBw+YANQGyCJPv1iMaE
+ * RyagnpApH9OPSrRIp2iR6uWT6836CET2erbfPaC1odyd8IsbnLldVs9CklH7EgXL
+ * Nms+DqrQEbNmvMuQYEFyZEHN9D1fGONeacx+cjI85FyMSHSEO65JJmasAxgQe4nF
+ * /yVz3rNQ2qAGqBhjsjP/WaXuB2aLZiAli/HjN17EJws=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * -----BEGIN RSA PRIVATE KEY-----
+ * MIIBOQIBAAJBALlfGg/5ZweJcW5zqLdnQ2uyircqDDlENKnv9FABOm/j0wnlPHqX
+ * CCqFBLoM7tG8ohci1SPy6fLJ5dqLf5FOH2sCAwEAAQJATO0/hpOMgx8xmJGc2Yeb
+ * /gyY7kwfyIAajs9Khw0LcDTYTo2EAI+vMmDpU+dvmOCLUqq/Z2tiKJhGyrmcBlxr
+ * kQIhAPYkbYovtvWHslxRb78x4eCrn2p1H7iolNKbyepjCI3zAiEAwMufJlLI9Q0O
+ * BIr7fPnUhbs9NyMHLIvIQAf/hXYubqkCIGJZR9NxIT+VyrSMbYQNoF0u9fGJfvU/
+ * lsdYLCOVEnP1AiAsSFjUx50K1CXNG1MqYIPU963W1T/Xln+3XV7ue7esiQIgW2Lu
+ * xGvz2dAUsGId+Xr2GZXb7ZucY/cPt4o5qdP1m7c=
+ * -----END RSA PRIVATE KEY-----
+ *
+ * Private-Key: (512 bit)
+ * modulus:
+ *     00:b9:5f:1a:0f:f9:67:07:89:71:6e:73:a8:b7:67:
+ *     43:6b:b2:8a:b7:2a:0c:39:44:34:a9:ef:f4:50:01:
+ *     3a:6f:e3:d3:09:e5:3c:7a:97:08:2a:85:04:ba:0c:
+ *     ee:d1:bc:a2:17:22:d5:23:f2:e9:f2:c9:e5:da:8b:
+ *     7f:91:4e:1f:6b
+ * publicExponent: 65537 (0x10001)
+ * privateExponent:
+ *     4c:ed:3f:86:93:8c:83:1f:31:98:91:9c:d9:87:9b:
+ *     fe:0c:98:ee:4c:1f:c8:80:1a:8e:cf:4a:87:0d:0b:
+ *     70:34:d8:4e:8d:84:00:8f:af:32:60:e9:53:e7:6f:
+ *     98:e0:8b:52:aa:bf:67:6b:62:28:98:46:ca:b9:9c:
+ *     06:5c:6b:91
+ * prime1:
+ *     00:f6:24:6d:8a:2f:b6:f5:87:b2:5c:51:6f:bf:31:
+ *     e1:e0:ab:9f:6a:75:1f:b8:a8:94:d2:9b:c9:ea:63:
+ *     08:8d:f3
+ * prime2:
+ *     00:c0:cb:9f:26:52:c8:f5:0d:0e:04:8a:fb:7c:f9:
+ *     d4:85:bb:3d:37:23:07:2c:8b:c8:40:07:ff:85:76:
+ *     2e:6e:a9
+ * exponent1:
+ *     62:59:47:d3:71:21:3f:95:ca:b4:8c:6d:84:0d:a0:
+ *     5d:2e:f5:f1:89:7e:f5:3f:96:c7:58:2c:23:95:12:
+ *     73:f5
+ * exponent2:
+ *     2c:48:58:d4:c7:9d:0a:d4:25:cd:1b:53:2a:60:83:
+ *     d4:f7:ad:d6:d5:3f:d7:96:7f:b7:5d:5e:ee:7b:b7:
+ *     ac:89
+ * coefficient:
+ *     5b:62:ee:c4:6b:f3:d9:d0:14:b0:62:1d:f9:7a:f6:
+ *     19:95:db:ed:9b:9c:63:f7:0f:b7:8a:39:a9:d3:f5:
+ *     9b:b7
+ *
+ *
+ * server certificate:
+ *  Data:
+ *      Version: 3 (0x2)
+ *      Serial Number: 11 (0xb)
+ *      Signature Algorithm: sha1WithRSAEncryption
+ *      Issuer: C=US, ST=Some-State, O=Some Org, CN=Someone
+ *      Validity
+ *          Not Before: Apr 18 15:07:30 2008 GMT
+ *          Not After : Jan  4 15:07:30 2028 GMT
+ *      Subject: C=US, ST=Some-State, O=Some Org, CN=SomeoneExport
+ *      Subject Public Key Info:
+ *          Public Key Algorithm: rsaEncryption
+ *          RSA Public Key: (512 bit)
+ *              Modulus (512 bit):
+ *                  00:b9:5f:1a:0f:f9:67:07:89:71:6e:73:a8:b7:67:
+ *                  43:6b:b2:8a:b7:2a:0c:39:44:34:a9:ef:f4:50:01:
+ *                  3a:6f:e3:d3:09:e5:3c:7a:97:08:2a:85:04:ba:0c:
+ *                  ee:d1:bc:a2:17:22:d5:23:f2:e9:f2:c9:e5:da:8b:
+ *                  7f:91:4e:1f:6b
+ *              Exponent: 65537 (0x10001)
+ *      X509v3 extensions:
+ *          X509v3 Basic Constraints:
+ *              CA:FALSE
+ *          X509v3 Key Usage:
+ *              Digital Signature, Non Repudiation, Key Encipherment
+ *          X509v3 Subject Key Identifier:
+ *              F1:30:98:BE:7C:AA:F9:B1:91:38:60:AE:13:5F:67:9C:0A:32:9E:31
+ *          X509v3 Authority Key Identifier:
+ *              keyid:B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICIDCCAYmgAwIBAgIBCzANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT
+ * B1NvbWVvbmUwHhcNMDgwNDE4MTUwNzMwWhcNMjgwMTA0MTUwNzMwWjBNMQswCQYD
+ * VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx
+ * FjAUBgNVBAMTDVNvbWVvbmVFeHBvcnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA
+ * uV8aD/lnB4lxbnOot2dDa7KKtyoMOUQ0qe/0UAE6b+PTCeU8epcIKoUEugzu0byi
+ * FyLVI/Lp8snl2ot/kU4fawIDAQABo1owWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF
+ * 4DAdBgNVHQ4EFgQU8TCYvnyq+bGROGCuE19nnAoynjEwHwYDVR0jBBgwFoAUtTJD
+ * 1wAkkrrpleX5o2RshO4zLhUwDQYJKoZIhvcNAQEFBQADgYEAFU+fP9FSTQNVZOhv
+ * eJ+zq6wI/biwzTgPbAq3yu2gb5kT85z4nzqBhPd2LWWFXhUW/D8QyNZ54X30y0Ug
+ * 3NfUAvOANW7CgUbHBmm77KQiF4nWdh338qqq9HzLGrPqcxX0dmiq2RBVPy9wb2Ea
+ * FTZiU2v+9pkoLoSDnCOfPCg/4Q4=
+ * -----END CERTIFICATE-----
+ *
+ *
+ * Trusted CA certificate:
+ * Certificate:
+ *   Data:
+ *       Version: 3 (0x2)
+ *       Serial Number: 0 (0x0)
+ *       Signature Algorithm: md5WithRSAEncryption
+ *       Issuer: C=US, ST=Some-State, O=Some Org, CN=Someone
+ *       Validity
+ *           Not Before: Mar 30 11:44:47 2001 GMT
+ *           Not After : Apr 27 11:44:47 2028 GMT
+ *       Subject: C=US, ST=Some-State, O=Some Org, CN=Someone
+ *       Subject Public Key Info:
+ *           Public Key Algorithm: rsaEncryption
+ *           RSA Public Key: (1024 bit)
+ *               Modulus (1024 bit):
+ *                   00:c1:98:e4:7a:87:53:0f:94:87:dc:da:f3:59:39:
+ *                   3e:36:95:e8:77:58:ff:46:8a:81:1b:5e:c5:4c:fa:
+ *                   b6:91:19:30:be:5b:ef:4c:aa:84:30:a4:9a:d4:68:
+ *                   af:ef:fa:b4:2c:76:8b:29:33:46:cf:38:74:7c:79:
+ *                   d5:07:a6:43:39:84:52:39:4f:8a:1c:f3:73:19:12:
+ *                   40:cf:ee:a1:77:43:01:02:be:8d:32:11:28:70:f4:
+ *                   cf:ab:43:75:e4:fb:74:f1:8c:2e:43:24:ba:85:3f:
+ *                   66:3a:05:ea:f7:ce:5b:97:e2:34:a3:f0:87:f4:f8:
+ *                   d1:59:12:5a:68:b7:78:64:a9
+ *               Exponent: 65537 (0x10001)
+ *       X509v3 extensions:
+ *           X509v3 Subject Key Identifier:
+ *               B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ *           X509v3 Authority Key Identifier:
+ *               keyid:B5:32:43:D7:00:24:92:BA:E9:95:E5:F9:A3:64:6C:84:EE:33:2E:15
+ *               DirName:/C=US/ST=Some-State/O=Some Org/CN=Someone
+ *               serial:00
+ *
+ *           X509v3 Basic Constraints:
+ *               CA:TRUE
+ *
+ * -----BEGIN CERTIFICATE-----
+ * MIICpjCCAg+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBHMQswCQYDVQQGEwJVUzET
+ * MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT
+ * B1NvbWVvbmUwHhcNMDEwMzMwMTE0NDQ3WhcNMjgwNDI3MTE0NDQ3WjBHMQswCQYD
+ * VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx
+ * EDAOBgNVBAMTB1NvbWVvbmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMGY
+ * 5HqHUw+Uh9za81k5PjaV6HdY/0aKgRtexUz6tpEZML5b70yqhDCkmtRor+/6tCx2
+ * iykzRs84dHx51QemQzmEUjlPihzzcxkSQM/uoXdDAQK+jTIRKHD0z6tDdeT7dPGM
+ * LkMkuoU/ZjoF6vfOW5fiNKPwh/T40VkSWmi3eGSpAgMBAAGjgaEwgZ4wHQYDVR0O
+ * BBYEFLUyQ9cAJJK66ZXl+aNkbITuMy4VMG8GA1UdIwRoMGaAFLUyQ9cAJJK66ZXl
+ * +aNkbITuMy4VoUukSTBHMQswCQYDVQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0
+ * ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMTB1NvbWVvbmWCAQAwDAYDVR0T
+ * BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBhf3PX0xWxtaUwZlWCO7GfPwCKgBWr
+ * CXqlqjtWHCshaaU7wUsDOwxFDWwKjFrMerQLsLuBlhdXEbNfSPjychkQtfezQHcS
+ * q0Atq7+KVSmRbDw6oKVRs5v1BBzLCupy+o16fNz3/hwreAWwQnSMtAh/osNS9w1b
+ * QeVWU+JV47H+vg==
+ * -----END CERTIFICATE-----
+ *
+ */
+
+import java.io.*;
+import java.net.*;
+import java.security.KeyStore;
+import java.security.KeyFactory;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateFactory;
+import java.security.spec.*;
+import java.security.interfaces.*;
+import javax.net.ssl.*;
+import java.math.BigInteger;
+
+public class RSAExport {
+
+    /*
+     * =============================================================
+     * Set the various variables needed for the tests, then
+     * specify what tests to run on each side.
+     */
+
+
+    /*
+     * Should we run the client or server in a separate thread?
+     * Both sides can throw exceptions, but do you have a preference
+     * as to which side should be the main thread.
+     */
+    static boolean separateServerThread = true;
+
+    /*
+     * Where do we find the keystores?
+     */
+    static String trusedCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICpjCCAg+gAwIBAgIBADANBgkqhkiG9w0BAQQFADBHMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT\n" +
+        "B1NvbWVvbmUwHhcNMDEwMzMwMTE0NDQ3WhcNMjgwNDI3MTE0NDQ3WjBHMQswCQYD\n" +
+        "VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx\n" +
+        "EDAOBgNVBAMTB1NvbWVvbmUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMGY\n" +
+        "5HqHUw+Uh9za81k5PjaV6HdY/0aKgRtexUz6tpEZML5b70yqhDCkmtRor+/6tCx2\n" +
+        "iykzRs84dHx51QemQzmEUjlPihzzcxkSQM/uoXdDAQK+jTIRKHD0z6tDdeT7dPGM\n" +
+        "LkMkuoU/ZjoF6vfOW5fiNKPwh/T40VkSWmi3eGSpAgMBAAGjgaEwgZ4wHQYDVR0O\n" +
+        "BBYEFLUyQ9cAJJK66ZXl+aNkbITuMy4VMG8GA1UdIwRoMGaAFLUyQ9cAJJK66ZXl\n" +
+        "+aNkbITuMy4VoUukSTBHMQswCQYDVQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0\n" +
+        "ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMTB1NvbWVvbmWCAQAwDAYDVR0T\n" +
+        "BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBhf3PX0xWxtaUwZlWCO7GfPwCKgBWr\n" +
+        "CXqlqjtWHCshaaU7wUsDOwxFDWwKjFrMerQLsLuBlhdXEbNfSPjychkQtfezQHcS\n" +
+        "q0Atq7+KVSmRbDw6oKVRs5v1BBzLCupy+o16fNz3/hwreAWwQnSMtAh/osNS9w1b\n" +
+        "QeVWU+JV47H+vg==\n" +
+        "-----END CERTIFICATE-----";
+
+    static String serverCertStr =
+        "-----BEGIN CERTIFICATE-----\n" +
+        "MIICIDCCAYmgAwIBAgIBCzANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzET\n" +
+        "MBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcxEDAOBgNVBAMT\n" +
+        "B1NvbWVvbmUwHhcNMDgwNDE4MTUwNzMwWhcNMjgwMTA0MTUwNzMwWjBNMQswCQYD\n" +
+        "VQQGEwJVUzETMBEGA1UECBMKU29tZS1TdGF0ZTERMA8GA1UEChMIU29tZSBPcmcx\n" +
+        "FjAUBgNVBAMTDVNvbWVvbmVFeHBvcnQwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA\n" +
+        "uV8aD/lnB4lxbnOot2dDa7KKtyoMOUQ0qe/0UAE6b+PTCeU8epcIKoUEugzu0byi\n" +
+        "FyLVI/Lp8snl2ot/kU4fawIDAQABo1owWDAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF\n" +
+        "4DAdBgNVHQ4EFgQU8TCYvnyq+bGROGCuE19nnAoynjEwHwYDVR0jBBgwFoAUtTJD\n" +
+        "1wAkkrrpleX5o2RshO4zLhUwDQYJKoZIhvcNAQEFBQADgYEAFU+fP9FSTQNVZOhv\n" +
+        "eJ+zq6wI/biwzTgPbAq3yu2gb5kT85z4nzqBhPd2LWWFXhUW/D8QyNZ54X30y0Ug\n" +
+        "3NfUAvOANW7CgUbHBmm77KQiF4nWdh338qqq9HzLGrPqcxX0dmiq2RBVPy9wb2Ea\n" +
+        "FTZiU2v+9pkoLoSDnCOfPCg/4Q4=\n" +
+        "-----END CERTIFICATE-----";
+
+    static byte privateExponent[] = {
+        (byte)0x4c, (byte)0xed, (byte)0x3f, (byte)0x86,
+        (byte)0x93, (byte)0x8c, (byte)0x83, (byte)0x1f,
+        (byte)0x31, (byte)0x98, (byte)0x91, (byte)0x9c,
+        (byte)0xd9, (byte)0x87, (byte)0x9b, (byte)0xfe,
+        (byte)0x0c, (byte)0x98, (byte)0xee, (byte)0x4c,
+        (byte)0x1f, (byte)0xc8, (byte)0x80, (byte)0x1a,
+        (byte)0x8e, (byte)0xcf, (byte)0x4a, (byte)0x87,
+        (byte)0x0d, (byte)0x0b, (byte)0x70, (byte)0x34,
+        (byte)0xd8, (byte)0x4e, (byte)0x8d, (byte)0x84,
+        (byte)0x00, (byte)0x8f, (byte)0xaf, (byte)0x32,
+        (byte)0x60, (byte)0xe9, (byte)0x53, (byte)0xe7,
+        (byte)0x6f, (byte)0x98, (byte)0xe0, (byte)0x8b,
+        (byte)0x52, (byte)0xaa, (byte)0xbf, (byte)0x67,
+        (byte)0x6b, (byte)0x62, (byte)0x28, (byte)0x98,
+        (byte)0x46, (byte)0xca, (byte)0xb9, (byte)0x9c,
+        (byte)0x06, (byte)0x5c, (byte)0x6b, (byte)0x91
+    };
+
+    static byte modulus[] = {
+        (byte)0x00,
+        (byte)0xb9, (byte)0x5f, (byte)0x1a, (byte)0x0f,
+        (byte)0xf9, (byte)0x67, (byte)0x07, (byte)0x89,
+        (byte)0x71, (byte)0x6e, (byte)0x73, (byte)0xa8,
+        (byte)0xb7, (byte)0x67, (byte)0x43, (byte)0x6b,
+        (byte)0xb2, (byte)0x8a, (byte)0xb7, (byte)0x2a,
+        (byte)0x0c, (byte)0x39, (byte)0x44, (byte)0x34,
+        (byte)0xa9, (byte)0xef, (byte)0xf4, (byte)0x50,
+        (byte)0x01, (byte)0x3a, (byte)0x6f, (byte)0xe3,
+        (byte)0xd3, (byte)0x09, (byte)0xe5, (byte)0x3c,
+        (byte)0x7a, (byte)0x97, (byte)0x08, (byte)0x2a,
+        (byte)0x85, (byte)0x04, (byte)0xba, (byte)0x0c,
+        (byte)0xee, (byte)0xd1, (byte)0xbc, (byte)0xa2,
+        (byte)0x17, (byte)0x22, (byte)0xd5, (byte)0x23,
+        (byte)0xf2, (byte)0xe9, (byte)0xf2, (byte)0xc9,
+        (byte)0xe5, (byte)0xda, (byte)0x8b, (byte)0x7f,
+        (byte)0x91, (byte)0x4e, (byte)0x1f, (byte)0x6b
+    };
+
+    static char passphrase[] = "passphrase".toCharArray();
+
+    /*
+     * Is the server ready to serve?
+     */
+    volatile static boolean serverReady = false;
+
+    /*
+     * Turn on SSL debugging?
+     */
+    static boolean debug = false;
+
+    /*
+     * If the client or server is doing some kind of object creation
+     * that the other side depends on, and that thread prematurely
+     * exits, you may experience a hang.  The test harness will
+     * terminate all hung threads after its timeout has expired,
+     * currently 3 minutes by default, but you might try to be
+     * smart about it....
+     */
+
+    /*
+     * Define the server side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doServerSide() throws Exception {
+        SSLServerSocketFactory sslssf =
+                getSSLContext(true).getServerSocketFactory();
+        SSLServerSocket sslServerSocket =
+                (SSLServerSocket) sslssf.createServerSocket(serverPort);
+
+        serverPort = sslServerSocket.getLocalPort();
+
+        /*
+         * Signal Client, we're ready for this connect.
+         */
+        serverReady = true;
+
+        // Enable RSA_EXPORT cipher suites only.
+        try {
+            String enabledSuites[] = {
+                "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
+                "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"};
+            sslServerSocket.setEnabledCipherSuites(enabledSuites);
+        } catch (IllegalArgumentException iae) {
+            // ignore the exception a cipher suite is unsupported.
+        }
+
+        SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
+        InputStream sslIS = sslSocket.getInputStream();
+        OutputStream sslOS = sslSocket.getOutputStream();
+
+        sslIS.read();
+        sslOS.write(85);
+        sslOS.flush();
+
+
+        sslSocket.close();
+    }
+
+    /*
+     * Define the client side of the test.
+     *
+     * If the server prematurely exits, serverReady will be set to true
+     * to avoid infinite hangs.
+     */
+    void doClientSide() throws Exception {
+
+        /*
+         * Wait for server to get started.
+         */
+        while (!serverReady) {
+            Thread.sleep(50);
+        }
+
+        SSLSocketFactory sslsf =
+                getSSLContext(false).getSocketFactory();
+        SSLSocket sslSocket = (SSLSocket)
+                sslsf.createSocket("localhost", serverPort);
+
+        // Enable RSA_EXPORT cipher suites only.
+        try {
+            String enabledSuites[] = {
+                "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
+                "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"};
+            sslSocket.setEnabledCipherSuites(enabledSuites);
+        } catch (IllegalArgumentException iae) {
+            // ignore the exception a cipher suite is unsupported.
+        }
+
+        InputStream sslIS = sslSocket.getInputStream();
+        OutputStream sslOS = sslSocket.getOutputStream();
+
+        sslOS.write(280);
+        sslOS.flush();
+        sslIS.read();
+
+        sslSocket.close();
+    }
+
+    /*
+     * =============================================================
+     * The remainder is just support stuff
+     */
+
+    // use any free port by default
+    volatile int serverPort = 0;
+
+    volatile Exception serverException = null;
+    volatile Exception clientException = null;
+
+    public static void main(String[] args) throws Exception {
+        if (debug)
+            System.setProperty("javax.net.debug", "all");
+
+        /*
+         * Start the tests.
+         */
+        new RSAExport();
+    }
+
+    Thread clientThread = null;
+    Thread serverThread = null;
+
+    /*
+     * Primary constructor, used to drive remainder of the test.
+     *
+     * Fork off the other side, then do your work.
+     */
+    RSAExport() throws Exception {
+        if (separateServerThread) {
+            startServer(true);
+            startClient(false);
+        } else {
+            startClient(true);
+            startServer(false);
+        }
+
+        /*
+         * Wait for other side to close down.
+         */
+        if (separateServerThread) {
+            serverThread.join();
+        } else {
+            clientThread.join();
+        }
+
+        /*
+         * When we get here, the test is pretty much over.
+         *
+         * If the main thread excepted, that propagates back
+         * immediately.  If the other thread threw an exception, we
+         * should report back.
+         */
+        if (serverException != null)
+            throw serverException;
+        if (clientException != null)
+            throw clientException;
+    }
+
+    void startServer(boolean newThread) throws Exception {
+        if (newThread) {
+            serverThread = new Thread() {
+                public void run() {
+                    try {
+                        doServerSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our server thread just died.
+                         *
+                         * Release the client, if not active already...
+                         */
+                        System.err.println("Server died..." + e);
+                        serverReady = true;
+                        serverException = e;
+                    }
+                }
+            };
+            serverThread.start();
+        } else {
+            doServerSide();
+        }
+    }
+
+    void startClient(boolean newThread) throws Exception {
+        if (newThread) {
+            clientThread = new Thread() {
+                public void run() {
+                    try {
+                        doClientSide();
+                    } catch (Exception e) {
+                        /*
+                         * Our client thread just died.
+                         */
+                        System.err.println("Client died...");
+                        clientException = e;
+                    }
+                }
+            };
+            clientThread.start();
+        } else {
+            doClientSide();
+        }
+    }
+
+    // Get the SSL context
+    private SSLContext getSSLContext(boolean authnRequired) throws Exception {
+        // generate certificate from cert string
+        CertificateFactory cf = CertificateFactory.getInstance("X.509");
+
+        ByteArrayInputStream is =
+                    new ByteArrayInputStream(trusedCertStr.getBytes());
+        Certificate trustedCert = cf.generateCertificate(is);
+
+        // create a key store
+        KeyStore ks = KeyStore.getInstance("JKS");
+        ks.load(null, null);
+
+        // import the trusted cert
+        ks.setCertificateEntry("RSA Export Signer", trustedCert);
+
+        if (authnRequired) {
+            // generate the private key.
+            RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(
+                                            new BigInteger(modulus),
+                                            new BigInteger(privateExponent));
+            KeyFactory kf = KeyFactory.getInstance("RSA");
+            RSAPrivateKey priKey =
+                    (RSAPrivateKey)kf.generatePrivate(priKeySpec);
+
+            // generate certificate chain
+            is = new ByteArrayInputStream(serverCertStr.getBytes());
+            Certificate serverCert = cf.generateCertificate(is);
+
+            Certificate[] chain = new Certificate[2];
+            chain[0] = serverCert;
+            chain[1] = trustedCert;
+
+            // import the key entry.
+            ks.setKeyEntry("RSA Export", priKey, passphrase, chain);
+        }
+
+        // create SSL context
+        TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
+        tmf.init(ks);
+
+        SSLContext ctx = SSLContext.getInstance("TLS");
+        if (authnRequired) {
+            KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
+            kmf.init(ks, passphrase);
+
+            ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
+        } else {
+            ctx.init(null, tmf.getTrustManagers(), null);
+        }
+
+        return ctx;
+    }
+
+}
--- a/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/security/ssl/com/sun/net/ssl/internal/ssl/SSLSocketImpl/AsyncSSLSocketClose.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/security/tools/keytool/StartDateTest.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/security/tools/keytool/StartDateTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/jdk/test/sun/security/tools/keytool/console.sh	Thu Jul 03 10:09:25 2008 -0700
+++ b/jdk/test/sun/security/tools/keytool/console.sh	Mon Jul 07 09:11:55 2008 -0700
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 #
-# 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
@@ -30,7 +30,7 @@
 #
 # @run shell/manual console.sh
 
-if [ "$ALT_PASS" == "" ]; then
+if [ "$ALT_PASS" = "" ]; then
   export PASS=äöäöäöäö
 else
   export PASS=$ALT_PASS
@@ -54,7 +54,7 @@
 echo "   Enter key password for <mykey>"
 echo "         (RETURN if same as keystore password):  Enter keystore password:"
 echo "only response to the last prompt by typing $PASS and press ENTER"
-echo 
+echo
 echo "Only if all the command run correctly without showing any error "
 echo "or warning, this test passes."
 echo
@@ -87,3 +87,6 @@
 $JM/bin/keytool -keystore kkk -list
 echo $PASS| $J5/bin/keytool -keystore kkk -list
 echo $PASS| $JM/bin/keytool -keystore kkk -list
+rm kkk
+
+exit 0
--- a/langtools/.hgtags	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/.hgtags	Mon Jul 07 09:11:55 2008 -0700
@@ -3,3 +3,4 @@
 c46d25a2350ac147d0121d9c9725af6fcb1b4dbe jdk7-b26
 a17265993253d61becd04fe7d96d1fe8b4bd6dff jdk7-b27
 4ef4bd31856949554967fbf22783babb21a62a0e jdk7-b28
+dec081837b01d509dcc2b9de86a4299c1ec17e04 jdk7-b29
--- a/langtools/make/build.properties	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/make/build.properties	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -66,7 +66,7 @@
 # set the following to -version to verify the versions of javac being used
 javac.version.opt = 
 # in time, there should be no exceptions to -Xlint:all
-javac.lint.opts = -Xlint:all,-unchecked,-deprecation,-fallthrough,-cast,-serial -Werror
+javac.lint.opts = -Xlint:all,-deprecation,-fallthrough,-serial,-unchecked,-cast
 
 # options for the <javadoc> task for javac
 javadoc.jls3.url=http://java.sun.com/docs/books/jls/
@@ -120,6 +120,8 @@
 	tools/javah/
 
 javap.includes = \
+	com/sun/tools/classfile/ \
+	com/sun/tools/javap/ \
 	sun/tools/javap/
 
 javap.tests = \
--- a/langtools/make/build.xml	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/make/build.xml	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- 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
@@ -136,7 +136,7 @@
             <arg value="-html:${findbugs.home}/src/xsl/fancy.xsl"/>
             <arg value="${dist.findbugs.dir}/findbugs.xml"/>
             <redirector output="${dist.findbugs.dir}/findbugs.html"/>
-        </exec>
+        </exec>
     </target>
 
     <target name="coverage" depends="-def-cobertura,build-all-classes,instrument-classes,jtreg,coverage-report"/>
@@ -301,14 +301,15 @@
                               jarmainclass="sun.tools.javap.Main"/>
     </target>
     
-    <target name="build-classes-javap" depends="build-bootstrap-javac">
+    <target name="build-classes-javap" depends="build-classes-javac">
         <build-classes name="javap" includes="${javap.includes}"/>
     </target>
     
-    <target name="build-javap" depends="build-bootstrap-javac">
+    <target name="build-javap" depends="build-javac">
         <build-tool name="javap"
                     includes="${javap.includes}"
-                    jarmainclass="sun.tools.javap.Main"/>
+                    jarmainclass="sun.tools.javap.Main"
+                    jarclasspath="javac.jar"/>
     </target>
     
     <!-- (no javadoc for javap) -->
@@ -480,7 +481,7 @@
                           destdir="@{gensrc.dir}"
                           includes="@{includes}"/>
                 <copy todir="@{gensrc.dir}">
-                    <fileset dir="${src.classes.dir}" includes="${javac.includes}"/>
+                    <fileset dir="${src.classes.dir}" includes="@{includes}"/>
                     <globmapper from="*.properties-template" to="*.properties"/>
                     <filterset begintoken="$(" endtoken=")">
                         <filter token="JDK_VERSION" value="${jdk.version}"/>
--- a/langtools/make/netbeans/common/standard-ide-actions-no-javadoc.ent	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/make/netbeans/common/standard-ide-actions-no-javadoc.ent	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- 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
@@ -157,5 +157,5 @@
 </action>
 
 <action name="javadoc">
-    <target>javadoc-nb</target>
+    <target>-javadoc-nb</target>
 </action>
--- a/langtools/make/netbeans/common/standard-ide-actions.ent	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/make/netbeans/common/standard-ide-actions.ent	Mon Jul 07 09:11:55 2008 -0700
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
- 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
@@ -157,5 +157,5 @@
 </action>
 
 <action name="javadoc">
-    <target>javadoc-nb</target>
+    <target>-javadoc-nb</target>
 </action>
--- a/langtools/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/apt/main/JavaCompiler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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
@@ -26,20 +26,14 @@
 package com.sun.tools.apt.main;
 
 import java.io.*;
-import java.nio.CharBuffer;
-import java.util.Set;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.HashMap;
 
 import javax.tools.JavaFileManager;
 import javax.tools.JavaFileObject;
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.tree.*;
-import com.sun.tools.javac.parser.*;
-import com.sun.tools.javac.comp.*;
 import com.sun.tools.javac.jvm.*;
 
 import com.sun.tools.javac.code.Symbol.*;
--- a/langtools/src/share/classes/com/sun/tools/apt/main/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/apt/main/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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
@@ -44,7 +44,7 @@
 import java.io.File;
 import java.net.MalformedURLException;
 
-import com.sun.tools.javac.util.Paths;
+import com.sun.tools.javac.file.Paths;
 import com.sun.tools.javac.code.Source;
 import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.code.Type;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/AccessFlags.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,254 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * See JVMS3, sections 4.2, 4.6, 4.7.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class AccessFlags {
+    public static final int ACC_PUBLIC        = 0x0001; // class, inner, field, method
+    public static final int ACC_PRIVATE       = 0x0002; //        inner, field, method
+    public static final int ACC_PROTECTED     = 0x0004; //        inner, field, method
+    public static final int ACC_STATIC        = 0x0008; //        inner, field, method
+    public static final int ACC_FINAL         = 0x0010; // class, inner, field, method
+    public static final int ACC_SUPER         = 0x0020; // class
+    public static final int ACC_SYNCHRONIZED  = 0x0020; //                      method
+    public static final int ACC_VOLATILE      = 0x0040; //               field
+    public static final int ACC_BRIDGE        = 0x0040; //                      method
+    public static final int ACC_TRANSIENT     = 0x0080; //               field
+    public static final int ACC_VARARGS       = 0x0080; //                      method
+    public static final int ACC_NATIVE        = 0x0100; //                      method
+    public static final int ACC_INTERFACE     = 0x0200; // class, inner
+    public static final int ACC_ABSTRACT      = 0x0400; // class, inner,        method
+    public static final int ACC_STRICT        = 0x0800; //                      method
+    public static final int ACC_SYNTHETIC     = 0x1000; // class, inner, field, method
+    public static final int ACC_ANNOTATION    = 0x2000; // class, inner
+    public static final int ACC_ENUM          = 0x4000; // class, inner, field
+    public static final int ACC_MODULE        = 0x8000; // class, inner, field, method
+
+    private static enum Type { Class, InnerClass, Field, Method};
+
+    AccessFlags(ClassReader cr) throws IOException {
+        this(cr.readUnsignedShort());
+    }
+
+    public AccessFlags(int flags) {
+        this.flags = flags;
+    }
+
+    public AccessFlags ignore(int mask) {
+        return new AccessFlags(flags & ~mask);
+    }
+
+    public boolean is(int mask) {
+        return (flags & mask) != 0;
+    }
+
+    private static final int[] classModifiers = {
+        ACC_PUBLIC, ACC_FINAL, ACC_ABSTRACT, ACC_MODULE
+    };
+
+    private static final int[] classFlags = {
+        ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_INTERFACE, ACC_ABSTRACT,
+        ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
+    };
+
+    public Set<String> getClassModifiers() {
+        int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
+        return getModifiers(f, classModifiers, Type.Class);
+    }
+
+    public Set<String> getClassFlags() {
+        return getFlags(classFlags, Type.Class);
+    }
+
+    private static final int[] innerClassModifiers = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
+        ACC_ABSTRACT, ACC_MODULE
+    };
+
+    private static final int[] innerClassFlags = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL, ACC_SUPER,
+        ACC_INTERFACE, ACC_ABSTRACT, ACC_SYNTHETIC, ACC_ANNOTATION, ACC_ENUM, ACC_MODULE
+    };
+
+    public Set<String> getInnerClassModifiers() {
+        int f = ((flags & ACC_INTERFACE) != 0 ? flags & ~ACC_ABSTRACT : flags);
+        return getModifiers(f, innerClassModifiers, Type.InnerClass);
+    }
+
+    public Set<String> getInnerClassFlags() {
+        return getFlags(innerClassFlags, Type.InnerClass);
+    }
+
+    private static final int[] fieldModifiers = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
+        ACC_VOLATILE, ACC_TRANSIENT, ACC_MODULE
+    };
+
+    private static final int[] fieldFlags = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
+        ACC_VOLATILE, ACC_TRANSIENT, ACC_SYNTHETIC, ACC_ENUM, ACC_MODULE
+    };
+
+    public Set<String> getFieldModifiers() {
+        return getModifiers(fieldModifiers, Type.Field);
+    }
+
+    public Set<String> getFieldFlags() {
+        return getFlags(fieldFlags, Type.Field);
+    }
+
+    private static final int[] methodModifiers = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
+        ACC_SYNCHRONIZED, ACC_NATIVE, ACC_ABSTRACT, ACC_STRICT, ACC_MODULE
+    };
+
+    private static final int[] methodFlags = {
+        ACC_PUBLIC, ACC_PRIVATE, ACC_PROTECTED, ACC_STATIC, ACC_FINAL,
+        ACC_SYNCHRONIZED, ACC_BRIDGE, ACC_VARARGS, ACC_NATIVE, ACC_ABSTRACT,
+        ACC_STRICT, ACC_SYNTHETIC, ACC_MODULE
+    };
+
+    public Set<String> getMethodModifiers() {
+        return getModifiers(methodModifiers, Type.Method);
+    }
+
+    public Set<String> getMethodFlags() {
+        return getFlags(methodFlags, Type.Method);
+    }
+
+    private Set<String> getModifiers(int[] modifierFlags, Type t) {
+        return getModifiers(flags, modifierFlags, t);
+    }
+
+    private static Set<String> getModifiers(int flags, int[] modifierFlags, Type t) {
+        Set<String> s = new LinkedHashSet<String>();
+        for (int m: modifierFlags) {
+            if ((flags & m) != 0)
+                s.add(flagToModifier(m, t));
+        }
+        return s;
+    }
+
+    private Set<String> getFlags(int[] expectedFlags, Type t) {
+        Set<String> s = new LinkedHashSet<String>();
+        int f = flags;
+        for (int e: expectedFlags) {
+            if ((f & e) != 0) {
+                s.add(flagToName(e, t));
+                f = f & ~e;
+            }
+        }
+        while (f != 0) {
+            int bit = Integer.highestOneBit(f);
+            s.add("0x" + Integer.toHexString(bit));
+            f = f & ~bit;
+        }
+        return s;
+    }
+
+    private static String flagToModifier(int flag, Type t) {
+        switch (flag) {
+            case ACC_PUBLIC:
+                return "public";
+            case ACC_PRIVATE:
+                return "private";
+            case ACC_PROTECTED:
+                return "protected";
+            case ACC_STATIC:
+                return "static";
+            case ACC_FINAL:
+                return "final";
+            case ACC_SYNCHRONIZED:
+                return "synchronized";
+            case 0x80:
+                return (t == Type.Field ? "transient" : null);
+            case ACC_VOLATILE:
+                return "volatile";
+            case ACC_NATIVE:
+                return "native";
+            case ACC_ABSTRACT:
+                return "abstract";
+            case ACC_STRICT:
+                return "strictfp";
+            case ACC_MODULE:
+                return "module";
+            default:
+                return null;
+        }
+    }
+
+    private static String flagToName(int flag, Type t) {
+        switch (flag) {
+        case ACC_PUBLIC:
+            return "ACC_PUBLIC";
+        case ACC_PRIVATE:
+            return "ACC_PRIVATE";
+        case ACC_PROTECTED:
+            return "ACC_PROTECTED";
+        case ACC_STATIC:
+            return "ACC_STATIC";
+        case ACC_FINAL:
+            return "ACC_FINAL";
+        case 0x20:
+            return (t == Type.Class ? "ACC_SUPER" : "ACC_SYNCHRONIZED");
+        case 0x40:
+            return (t == Type.Field ? "ACC_VOLATILE" : "ACC_BRIDGE");
+        case 0x80:
+            return (t == Type.Field ? "ACC_TRANSIENT" : "ACC_VARARGS");
+        case ACC_NATIVE:
+            return "ACC_NATIVE";
+        case ACC_INTERFACE:
+            return "ACC_INTERFACE";
+        case ACC_ABSTRACT:
+            return "ACC_ABSTRACT";
+        case ACC_STRICT:
+            return "ACC_STRICT";
+        case ACC_SYNTHETIC:
+            return "ACC_SYNTHETIC";
+        case ACC_ANNOTATION:
+            return "ACC_ANNOTATION";
+        case ACC_ENUM:
+            return "ACC_ENUM";
+        case ACC_MODULE:
+            return "ACC_MODULE";
+        default:
+            return null;
+        }
+    }
+
+    final int flags;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Annotation.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,243 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.16.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Annotation {
+    static class InvalidAnnotation extends AttributeException {
+        InvalidAnnotation(String msg) {
+            super(msg);
+        }
+    }
+
+    Annotation(ClassReader cr) throws IOException, InvalidAnnotation {
+        type_index = cr.readUnsignedShort();
+        num_element_value_pairs = cr.readUnsignedShort();
+        element_value_pairs = new element_value_pair[num_element_value_pairs];
+        for (int i = 0; i < element_value_pairs.length; i++)
+            element_value_pairs[i] = new element_value_pair(cr);
+    }
+
+    public Annotation(ConstantPool constant_pool,
+            int type_index,
+            element_value_pair[] element_value_pairs) {
+        this.type_index = type_index;
+        num_element_value_pairs = element_value_pairs.length;
+        this.element_value_pairs = element_value_pairs;
+    }
+
+    public int length() {
+        int n = 2 /*type_index*/ + 2 /*num_element_value_pairs*/;
+        for (element_value_pair pair: element_value_pairs)
+            n += pair.length();
+        return n;
+    }
+
+    public final int type_index;
+    public final int num_element_value_pairs;
+    public final element_value_pair element_value_pairs[];
+
+    /**
+     * See JVMS3, section 4.8.16.1.
+     */
+    public static abstract class element_value {
+        public static element_value read(ClassReader cr)
+                throws IOException, InvalidAnnotation {
+            int tag = cr.readUnsignedByte();
+            switch (tag) {
+            case 'B':
+            case 'C':
+            case 'D':
+            case 'F':
+            case 'I':
+            case 'J':
+            case 'S':
+            case 'Z':
+            case 's':
+                return new Primitive_element_value(cr, tag);
+
+            case 'e':
+                return new Enum_element_value(cr, tag);
+
+            case 'c':
+                return new Class_element_value(cr, tag);
+
+            case '@':
+                return new Annotation_element_value(cr, tag);
+
+            case '[':
+                return new Array_element_value(cr, tag);
+
+            default:
+                throw new InvalidAnnotation("unrecognized tag: " + tag);
+            }
+        }
+
+        protected element_value(int tag) {
+            this.tag = tag;
+        }
+
+        public abstract int length();
+
+        public abstract <R,P> R accept(Visitor<R,P> visitor, P p);
+
+        public interface Visitor<R,P> {
+            R visitPrimitive(Primitive_element_value ev, P p);
+            R visitEnum(Enum_element_value ev, P p);
+            R visitClass(Class_element_value ev, P p);
+            R visitAnnotation(Annotation_element_value ev, P p);
+            R visitArray(Array_element_value ev, P p);
+        }
+
+        public final int tag;
+    }
+
+    public static class Primitive_element_value extends element_value {
+        Primitive_element_value(ClassReader cr, int tag) throws IOException {
+            super(tag);
+            const_value_index = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return 2;
+        }
+
+        public <R,P> R accept(Visitor<R,P> visitor, P p) {
+            return visitor.visitPrimitive(this, p);
+        }
+
+        public final int const_value_index;
+
+    }
+
+    public static class Enum_element_value extends element_value {
+        Enum_element_value(ClassReader cr, int tag) throws IOException {
+            super(tag);
+            type_name_index = cr.readUnsignedShort();
+            const_name_index = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return 4;
+        }
+
+        public <R,P> R accept(Visitor<R,P> visitor, P p) {
+            return visitor.visitEnum(this, p);
+        }
+
+        public final int type_name_index;
+        public final int const_name_index;
+    }
+
+    public static class Class_element_value extends element_value {
+        Class_element_value(ClassReader cr, int tag) throws IOException {
+            super(tag);
+            class_info_index = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return 2;
+        }
+
+        public <R,P> R accept(Visitor<R,P> visitor, P p) {
+            return visitor.visitClass(this, p);
+        }
+
+        public final int class_info_index;
+    }
+
+    public static class Annotation_element_value extends element_value {
+        Annotation_element_value(ClassReader cr, int tag)
+                throws IOException, InvalidAnnotation {
+            super(tag);
+            annotation_value = new Annotation(cr);
+        }
+
+        @Override
+        public int length() {
+            return annotation_value.length();
+        }
+
+        public <R,P> R accept(Visitor<R,P> visitor, P p) {
+            return visitor.visitAnnotation(this, p);
+        }
+
+        public final Annotation annotation_value;
+    }
+
+    public static class Array_element_value extends element_value {
+        Array_element_value(ClassReader cr, int tag)
+                throws IOException, InvalidAnnotation {
+            super(tag);
+            num_values = cr.readUnsignedShort();
+            values = new element_value[num_values];
+            for (int i = 0; i < values.length; i++)
+                values[i] = element_value.read(cr);
+        }
+
+        @Override
+        public int length() {
+            int n = 2;
+            for (int i = 0; i < values.length; i++)
+                n += values[i].length();
+            return n;
+        }
+
+        public <R,P> R accept(Visitor<R,P> visitor, P p) {
+            return visitor.visitArray(this, p);
+        }
+
+        public final int num_values;
+        public final element_value[] values;
+    }
+
+    public static class element_value_pair {
+        element_value_pair(ClassReader cr)
+                throws IOException, InvalidAnnotation {
+            element_name_index = cr.readUnsignedShort();
+            value = element_value.read(cr);
+        }
+
+        public int length() {
+            return 2 + value.length();
+        }
+
+        public final int element_name_index;
+        public final element_value value;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/AnnotationDefault_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.15.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class AnnotationDefault_attribute extends Attribute {
+    AnnotationDefault_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(name_index, length);
+        default_value = Annotation.element_value.read(cr);
+    }
+
+    public AnnotationDefault_attribute(ConstantPool constant_pool, Annotation.element_value default_value)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.AnnotationDefault), default_value);
+    }
+
+    public AnnotationDefault_attribute(int name_index, Annotation.element_value default_value) {
+        super(name_index, default_value.length());
+        this.default_value = default_value;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitAnnotationDefault(this, data);
+    }
+
+    public final Annotation.element_value default_value;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,199 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+
+public abstract class Attribute {
+    public static final String AnnotationDefault        = "AnnotationDefault";
+    public static final String CharacterRangeTable      = "CharacterRangeTable";
+    public static final String Code                     = "Code";
+    public static final String ConstantValue            = "ConstantValue";
+    public static final String CompilationID            = "CompilationID";
+    public static final String Deprecated               = "Deprecated";
+    public static final String EnclosingMethod          = "EnclosingMethod";
+    public static final String Exceptions               = "Exceptions";
+    public static final String InnerClasses             = "InnerClasses";
+    public static final String LineNumberTable          = "LineNumberTable";
+    public static final String LocalVariableTable       = "LocalVariableTable";
+    public static final String LocalVariableTypeTable   = "LocalVariableTypeTable";
+    public static final String RuntimeVisibleAnnotations = "RuntimeVisibleAnnotations";
+    public static final String RuntimeInvisibleAnnotations = "RuntimeInvisibleAnnotations";
+    public static final String RuntimeVisibleParameterAnnotations = "RuntimeVisibleParameterAnnotations";
+    public static final String RuntimeInvisibleParameterAnnotations = "RuntimeInvisibleParameterAnnotations";
+    public static final String Signature                = "Signature";
+    public static final String SourceDebugExtension     = "SourceDebugExtension";
+    public static final String SourceFile               = "SourceFile";
+    public static final String SourceID                 = "SourceID";
+    public static final String StackMap                 = "StackMap";
+    public static final String StackMapTable            = "StackMapTable";
+    public static final String Synthetic                = "Synthetic";
+
+    // JSR 277/294
+    public static final String Module                   = "Module";
+    public static final String ModuleExportTable        = "ModuleExportTable";
+    public static final String ModuleMemberTable        = "ModuleMemberTable";
+
+    public static class Factory {
+        public Factory() {
+            // defer init of standardAttributeClasses until after options set up
+        }
+
+        public void setCompat(boolean compat) {
+            this.compat = compat;
+        }
+
+        public void setJSR277(boolean jsr277) {
+            this.jsr277 = jsr277;
+        }
+
+        public Attribute createAttribute(ClassReader cr, int name_index, byte[] data)
+                throws IOException {
+            if (standardAttributes == null)
+                init();
+
+            ConstantPool cp = cr.getConstantPool();
+            try {
+                String name = cp.getUTF8Value(name_index);
+                Class<? extends Attribute> attrClass = standardAttributes.get(name);
+                if (attrClass != null) {
+                    try {
+                        Class<?>[] constrArgTypes = {ClassReader.class, int.class, int.class};
+                        Constructor<? extends Attribute> constr = attrClass.getDeclaredConstructor(constrArgTypes);
+                        return constr.newInstance(new Object[] { cr, name_index, data.length });
+                    } catch (Throwable t) {
+                        // fall through and use DefaultAttribute
+                        // t.printStackTrace();
+                    }
+                }
+            } catch (ConstantPoolException e) {
+                // fall through and use DefaultAttribute
+            }
+            return new DefaultAttribute(cr, name_index, data);
+        }
+
+        protected void init() {
+            standardAttributes = new HashMap<String,Class<? extends Attribute>>();
+            standardAttributes.put(AnnotationDefault, AnnotationDefault_attribute.class);
+            standardAttributes.put(CharacterRangeTable, CharacterRangeTable_attribute.class);
+            standardAttributes.put(Code,              Code_attribute.class);
+            standardAttributes.put(ConstantValue,     ConstantValue_attribute.class);
+            standardAttributes.put(Deprecated,        Deprecated_attribute.class);
+            standardAttributes.put(EnclosingMethod,   EnclosingMethod_attribute.class);
+            standardAttributes.put(Exceptions,        Exceptions_attribute.class);
+            standardAttributes.put(InnerClasses,      InnerClasses_attribute.class);
+            standardAttributes.put(LineNumberTable,   LineNumberTable_attribute.class);
+            standardAttributes.put(LocalVariableTable, LocalVariableTable_attribute.class);
+            standardAttributes.put(LocalVariableTypeTable, LocalVariableTypeTable_attribute.class);
+
+            if (jsr277) {
+                standardAttributes.put(Module,            Module_attribute.class);
+                standardAttributes.put(ModuleExportTable, ModuleExportTable_attribute.class);
+                standardAttributes.put(ModuleMemberTable, ModuleMemberTable_attribute.class);
+            }
+
+            if (!compat) { // old javap does not recognize recent attributes
+                standardAttributes.put(CompilationID, CompilationID_attribute.class);
+                standardAttributes.put(RuntimeInvisibleAnnotations, RuntimeInvisibleAnnotations_attribute.class);
+                standardAttributes.put(RuntimeInvisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations_attribute.class);
+                standardAttributes.put(RuntimeVisibleAnnotations, RuntimeVisibleAnnotations_attribute.class);
+                standardAttributes.put(RuntimeVisibleParameterAnnotations, RuntimeVisibleParameterAnnotations_attribute.class);
+                standardAttributes.put(Signature,     Signature_attribute.class);
+                standardAttributes.put(SourceID, SourceID_attribute.class);
+            }
+
+            standardAttributes.put(SourceDebugExtension, SourceDebugExtension_attribute.class);
+            standardAttributes.put(SourceFile,        SourceFile_attribute.class);
+            standardAttributes.put(StackMap,          StackMap_attribute.class);
+            standardAttributes.put(StackMapTable,     StackMapTable_attribute.class);
+            standardAttributes.put(Synthetic,         Synthetic_attribute.class);
+        }
+
+        private Map<String,Class<? extends Attribute>> standardAttributes;
+        private boolean compat; // don't support recent attrs in compatibility mode
+        private boolean jsr277; // support new jsr277 attrs
+    }
+
+    public static Attribute read(ClassReader cr) throws IOException {
+        return cr.readAttribute();
+    }
+
+    protected Attribute(int name_index, int length) {
+        attribute_name_index = name_index;
+        attribute_length = length;
+    }
+
+    public String getName(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(attribute_name_index);
+    }
+
+    public abstract <R,D> R accept(Attribute.Visitor<R,D> visitor, D data);
+
+    public final int attribute_name_index;
+    public final int attribute_length;
+
+
+    public interface Visitor<R,P> {
+        R visitDefault(DefaultAttribute attr, P p);
+        R visitAnnotationDefault(AnnotationDefault_attribute attr, P p);
+        R visitCharacterRangeTable(CharacterRangeTable_attribute attr, P p);
+        R visitCode(Code_attribute attr, P p);
+        R visitCompilationID(CompilationID_attribute attr, P p);
+        R visitConstantValue(ConstantValue_attribute attr, P p);
+        R visitDeprecated(Deprecated_attribute attr, P p);
+        R visitEnclosingMethod(EnclosingMethod_attribute attr, P p);
+        R visitExceptions(Exceptions_attribute attr, P p);
+        R visitInnerClasses(InnerClasses_attribute attr, P p);
+        R visitLineNumberTable(LineNumberTable_attribute attr, P p);
+        R visitLocalVariableTable(LocalVariableTable_attribute attr, P p);
+        R visitLocalVariableTypeTable(LocalVariableTypeTable_attribute attr, P p);
+        R visitRuntimeVisibleAnnotations(RuntimeVisibleAnnotations_attribute attr, P p);
+        R visitRuntimeInvisibleAnnotations(RuntimeInvisibleAnnotations_attribute attr, P p);
+        R visitRuntimeVisibleParameterAnnotations(RuntimeVisibleParameterAnnotations_attribute attr, P p);
+        R visitRuntimeInvisibleParameterAnnotations(RuntimeInvisibleParameterAnnotations_attribute attr, P p);
+        R visitSignature(Signature_attribute attr, P p);
+        R visitSourceDebugExtension(SourceDebugExtension_attribute attr, P p);
+        R visitSourceFile(SourceFile_attribute attr, P p);
+        R visitSourceID(SourceID_attribute attr, P p);
+        R visitStackMap(StackMap_attribute attr, P p);
+        R visitStackMapTable(StackMapTable_attribute attr, P p);
+        R visitSynthetic(Synthetic_attribute attr, P p);
+
+        R visitModule(Module_attribute attr, P p);
+        R visitModuleExportTable(ModuleExportTable_attribute attr, P p);
+        R visitModuleMemberTable(ModuleMemberTable_attribute attr, P p);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/AttributeException.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,40 @@
+/*
+ * 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.tools.classfile;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class AttributeException extends Exception {
+    AttributeException() { }
+
+    AttributeException(String msg) {
+        super(msg);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Attributes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,87 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Attributes implements Iterable<Attribute> {
+    Attributes(ClassReader cr) throws IOException {
+        map = new HashMap<String,Attribute>();
+        int attrs_count = cr.readUnsignedShort();
+        attrs = new Attribute[attrs_count];
+        for (int i = 0; i < attrs_count; i++) {
+            Attribute attr = Attribute.read(cr);
+            attrs[i] = attr;
+            try {
+                map.put(attr.getName(cr.getConstantPool()), attr);
+            } catch (ConstantPoolException e) {
+                // don't enter invalid names in map
+            }
+        }
+    }
+
+    public Attributes(ConstantPool constant_pool, Attribute[] attrs) {
+        this.attrs = attrs;
+        map = new HashMap<String,Attribute>();
+        for (int i = 0; i < attrs.length; i++) {
+            Attribute attr = attrs[i];
+            try {
+                map.put(attr.getName(constant_pool), attr);
+            } catch (ConstantPoolException e) {
+                // don't enter invalid names in map
+            }
+        }
+    }
+
+    public Iterator<Attribute> iterator() {
+        return Arrays.asList(attrs).iterator();
+    }
+
+    public Attribute get(int index) {
+        return attrs[index];
+    }
+
+    public Attribute get(String name) {
+        return map.get(name);
+    }
+
+    public int size() {
+        return attrs.length;
+    }
+
+    public final Attribute[] attrs;
+    public final Map<String, Attribute> map;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/CharacterRangeTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,90 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class CharacterRangeTable_attribute  extends Attribute {
+    public static final int CRT_STATEMENT       = 0x0001;
+    public static final int CRT_BLOCK           = 0x0002;
+    public static final int CRT_ASSIGNMENT      = 0x0004;
+    public static final int CRT_FLOW_CONTROLLER = 0x0008;
+    public static final int CRT_FLOW_TARGET     = 0x0010;
+    public static final int CRT_INVOKE          = 0x0020;
+    public static final int CRT_CREATE          = 0x0040;
+    public static final int CRT_BRANCH_TRUE     = 0x0080;
+    public static final int CRT_BRANCH_FALSE    = 0x0100;
+
+    CharacterRangeTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        int character_range_table_length = cr.readUnsignedShort();
+        character_range_table = new Entry[character_range_table_length];
+        for (int i = 0; i < character_range_table_length; i++)
+            character_range_table[i] = new Entry(cr);
+    }
+
+    public CharacterRangeTable_attribute(ConstantPool constant_pool, Entry[] character_range_table)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.CharacterRangeTable), character_range_table);
+    }
+
+    public CharacterRangeTable_attribute(int name_index, Entry[] character_range_table) {
+        super(name_index, character_range_table.length * Entry.length());
+        this.character_range_table = character_range_table;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitCharacterRangeTable(this, data);
+    }
+
+    public final Entry[] character_range_table;
+
+    public static class Entry {
+        Entry(ClassReader cr) throws IOException {
+            start_pc = cr.readUnsignedShort();
+            end_pc = cr.readUnsignedShort();
+            character_range_start = cr.readInt();
+            character_range_end = cr.readInt();
+            flags = cr.readUnsignedShort();
+        }
+
+        public static int length() {
+            return 14;
+        }
+
+        public final int start_pc;
+        public final int end_pc;
+        public final int character_range_start;
+        public final int character_range_end;
+        public final int flags;
+    };
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ClassFile.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,153 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import static com.sun.tools.classfile.AccessFlags.*;
+
+/**
+ * See JVMS3, section 4.2.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClassFile {
+    public static ClassFile read(File file)
+            throws IOException, ConstantPoolException {
+        return read(file, new Attribute.Factory());
+    }
+
+    public static ClassFile read(File file, Attribute.Factory attributeFactory)
+            throws IOException, ConstantPoolException {
+        FileInputStream in = new FileInputStream(file);
+        try {
+            return new ClassFile(in, attributeFactory);
+        } finally {
+            try {
+                in.close();
+            } catch (IOException e) {
+                // ignore
+            }
+        }
+    }
+
+    public static ClassFile read(InputStream in)
+            throws IOException, ConstantPoolException {
+        return new ClassFile(in, new Attribute.Factory());
+    }
+
+    public static ClassFile read(InputStream in, Attribute.Factory attributeFactory)
+            throws IOException, ConstantPoolException {
+        return new ClassFile(in, attributeFactory);
+    }
+
+    ClassFile(InputStream in, Attribute.Factory attributeFactory) throws IOException, ConstantPoolException {
+        ClassReader cr = new ClassReader(this, in, attributeFactory);
+        magic = cr.readInt();
+        minor_version = cr.readUnsignedShort();
+        major_version = cr.readUnsignedShort();
+        constant_pool = new ConstantPool(cr);
+        access_flags = new AccessFlags(cr);
+        this_class = cr.readUnsignedShort();
+        super_class = cr.readUnsignedShort();
+
+        int interfaces_count = cr.readUnsignedShort();
+        interfaces = new int[interfaces_count];
+        for (int i = 0; i < interfaces_count; i++)
+            interfaces[i] = cr.readUnsignedShort();
+
+        int fields_count = cr.readUnsignedShort();
+        fields = new Field[fields_count];
+        for (int i = 0; i < fields_count; i++)
+            fields[i] = new Field(cr);
+
+        int methods_count = cr.readUnsignedShort();
+        methods = new Method[methods_count];
+        for (int i = 0; i < methods_count; i++)
+            methods[i] = new Method(cr);
+
+        attributes = new Attributes(cr);
+    }
+
+    public ClassFile(int magic, int minor_version, int major_version,
+            ConstantPool constant_pool, AccessFlags access_flags,
+            int this_class, int super_class, int[] interfaces,
+            Field[] fields, Method[] methods, Attributes attributes) {
+        this.magic = magic;
+        this.minor_version = minor_version;
+        this.major_version = major_version;
+        this.constant_pool = constant_pool;
+        this.access_flags = access_flags;
+        this.this_class = this_class;
+        this.super_class = super_class;
+        this.interfaces = interfaces;
+        this.fields = fields;
+        this.methods = methods;
+        this.attributes = attributes;
+    }
+
+    public String getName() throws ConstantPoolException {
+        return constant_pool.getClassInfo(this_class).getName();
+    }
+
+    public String getSuperclassName() throws ConstantPoolException {
+        return constant_pool.getClassInfo(super_class).getName();
+    }
+
+    public String getInterfaceName(int i) throws ConstantPoolException {
+        return constant_pool.getClassInfo(interfaces[i]).getName();
+    }
+
+    public Attribute getAttribute(String name) {
+        return attributes.get(name);
+    }
+
+    public boolean isClass() {
+        return !isInterface();
+    }
+
+    public boolean isInterface() {
+        return access_flags.is(ACC_INTERFACE);
+    }
+
+    public final int magic;
+    public final int minor_version;
+    public final int major_version;
+    public final ConstantPool constant_pool;
+    public final AccessFlags access_flags;
+    public final int this_class;
+    public final int super_class;
+    public final int[] interfaces;
+    public final Field[] fields;
+    public final Method[] methods;
+    public final Attributes attributes;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ClassReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,109 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClassReader {
+    ClassReader(ClassFile classFile, InputStream in, Attribute.Factory attributeFactory) throws IOException {
+        // null checks
+        classFile.getClass();
+        attributeFactory.getClass();
+
+        this.classFile = classFile;
+        this.in = new DataInputStream(new BufferedInputStream(in));
+        this.attributeFactory = attributeFactory;
+    }
+
+    ClassFile getClassFile() {
+        return classFile;
+    }
+
+    ConstantPool getConstantPool() {
+        return classFile.constant_pool;
+    }
+
+    public Attribute readAttribute() throws IOException {
+        int name_index = readUnsignedShort();
+        int length = readInt();
+        byte[] data = new byte[length];
+        readFully(data);
+
+        DataInputStream prev = in;
+        in = new DataInputStream(new ByteArrayInputStream(data));
+        try {
+            return attributeFactory.createAttribute(this, name_index, data);
+        } finally {
+            in = prev;
+        }
+    }
+
+    public void readFully(byte[] b) throws IOException {
+        in.readFully(b);
+    }
+
+    public int readUnsignedByte() throws IOException {
+        return in.readUnsignedByte();
+    }
+
+    public int readUnsignedShort() throws IOException {
+        return in.readUnsignedShort();
+    }
+
+    public int readInt() throws IOException {
+        return in.readInt();
+    }
+
+    public long readLong() throws IOException {
+        return in.readLong();
+    }
+
+    public float readFloat() throws IOException {
+        return in.readFloat();
+    }
+
+    public double readDouble() throws IOException {
+        return in.readDouble();
+    }
+
+    public String readUTF() throws IOException {
+        return in.readUTF();
+    }
+
+    private DataInputStream in;
+    private ClassFile classFile;
+    private Attribute.Factory attributeFactory;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ClassTranslator.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,368 @@
+/*
+ * 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.tools.classfile;
+
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Class_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Double_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Fieldref_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Float_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Integer_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_InterfaceMethodref_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Long_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Methodref_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_NameAndType_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_String_info;
+import com.sun.tools.classfile.ConstantPool.CONSTANT_Utf8_info;
+import com.sun.tools.classfile.ConstantPool.CPInfo;
+import java.util.Map;
+
+/**
+ * Rewrites a class file using a map of translations.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClassTranslator
+        implements ConstantPool.Visitor<ConstantPool.CPInfo,Map<Object,Object>> {
+    /**
+     * Create a new ClassFile from {@code cf}, such that for all entries
+     * {@code k&nbsp;-\&gt;&nbsp;v} in {@code translations},
+     * each occurrence of {@code k} in {@code cf} will be replaced by {@code v}.
+     * in
+     * @param cf the class file to be processed
+     * @param translations the set of translations to be applied
+     * @return a copy of {@code} with the values in {@code translations} substituted
+     */
+    public ClassFile translate(ClassFile cf, Map<Object,Object> translations) {
+        ClassFile cf2 = (ClassFile) translations.get(cf);
+        if (cf2 == null) {
+            ConstantPool constant_pool2 = translate(cf.constant_pool, translations);
+            Field[] fields2 = translate(cf.fields, cf.constant_pool, translations);
+            Method[] methods2 = translateMethods(cf.methods, cf.constant_pool, translations);
+            Attributes attributes2 = translateAttributes(cf.attributes, cf.constant_pool,
+                    translations);
+
+            if (constant_pool2 == cf.constant_pool &&
+                    fields2 == cf.fields &&
+                    methods2 == cf.methods &&
+                    attributes2 == cf.attributes)
+                cf2 = cf;
+            else
+                cf2 = new ClassFile(
+                        cf.magic,
+                        cf.minor_version,
+                        cf.major_version,
+                        constant_pool2,
+                        cf.access_flags,
+                        cf.this_class,
+                        cf.super_class,
+                        cf.interfaces,
+                        fields2,
+                        methods2,
+                        attributes2);
+            translations.put(cf, cf2);
+        }
+        return cf2;
+    }
+
+    ConstantPool translate(ConstantPool cp, Map<Object,Object> translations) {
+        ConstantPool cp2 = (ConstantPool) translations.get(cp);
+        if (cp2 == null) {
+            ConstantPool.CPInfo[] pool2 = new ConstantPool.CPInfo[cp.size()];
+            boolean eq = true;
+            for (int i = 0; i < cp.size(); i++) {
+                ConstantPool.CPInfo cpInfo;
+                try {
+                    cpInfo = cp.get(i);
+                } catch (ConstantPool.InvalidIndex e) {
+                    throw new IllegalStateException(e);
+                }
+                ConstantPool.CPInfo cpInfo2 = translate(cpInfo, translations);
+                eq &= (cpInfo == cpInfo2);
+                pool2[i] = cpInfo2;
+                if (cpInfo.getTag() != cpInfo2.getTag())
+                    throw new IllegalStateException();
+                switch (cpInfo.getTag()) {
+                    case ConstantPool.CONSTANT_Double:
+                    case ConstantPool.CONSTANT_Long:
+                        i += 1;
+                }
+            }
+
+            if (eq)
+                cp2 = cp;
+            else
+                cp2 = new ConstantPool(pool2);
+
+            translations.put(cp, cp2);
+        }
+        return cp2;
+    }
+
+    ConstantPool.CPInfo translate(ConstantPool.CPInfo cpInfo, Map<Object,Object> translations) {
+        ConstantPool.CPInfo cpInfo2 = (ConstantPool.CPInfo) translations.get(cpInfo);
+        if (cpInfo2 == null) {
+            cpInfo2 = cpInfo.accept(this, translations);
+            translations.put(cpInfo, cpInfo2);
+        }
+        return cpInfo2;
+    }
+
+    Field[] translate(Field[] fields, ConstantPool constant_pool, Map<Object,Object> translations) {
+        Field[] fields2 = (Field[]) translations.get(fields);
+        if (fields2 == null) {
+            fields2 = new Field[fields.length];
+            for (int i = 0; i < fields.length; i++)
+                fields2[i] = translate(fields[i], constant_pool, translations);
+            if (equal(fields, fields2))
+                fields2 = fields;
+            translations.put(fields, fields2);
+        }
+        return fields2;
+    }
+
+    Field translate(Field field, ConstantPool constant_pool, Map<Object,Object> translations) {
+        Field field2 = (Field) translations.get(field);
+        if (field2 == null) {
+            Attributes attributes2 = translateAttributes(field.attributes, constant_pool,
+                    translations);
+
+            if (attributes2 == field.attributes)
+                field2 = field;
+            else
+                field2 = new Field(
+                        field.access_flags,
+                        field.name_index,
+                        field.descriptor,
+                        attributes2);
+            translations.put(field, field2);
+        }
+        return field2;
+    }
+
+    Method[] translateMethods(Method[] methods, ConstantPool constant_pool, Map<Object,Object> translations) {
+        Method[] methods2 = (Method[]) translations.get(methods);
+        if (methods2 == null) {
+            methods2 = new Method[methods.length];
+            for (int i = 0; i < methods.length; i++)
+                methods2[i] = translate(methods[i], constant_pool, translations);
+            if (equal(methods, methods2))
+                methods2 = methods;
+            translations.put(methods, methods2);
+        }
+        return methods2;
+    }
+
+    Method translate(Method method, ConstantPool constant_pool, Map<Object,Object> translations) {
+        Method method2 = (Method) translations.get(method);
+        if (method2 == null) {
+            Attributes attributes2 = translateAttributes(method.attributes, constant_pool,
+                    translations);
+
+            if (attributes2 == method.attributes)
+                method2 = method;
+            else
+                method2 = new Method(
+                        method.access_flags,
+                        method.name_index,
+                        method.descriptor,
+                        attributes2);
+            translations.put(method, method2);
+        }
+        return method2;
+    }
+
+    Attributes translateAttributes(Attributes attributes,
+            ConstantPool constant_pool, Map<Object,Object> translations) {
+        Attributes attributes2 = (Attributes) translations.get(attributes);
+        if (attributes2 == null) {
+            Attribute[] attrArray2 = new Attribute[attributes.size()];
+            ConstantPool constant_pool2 = translate(constant_pool, translations);
+            boolean attrsEqual = true;
+            for (int i = 0; i < attributes.size(); i++) {
+                Attribute attr = attributes.get(i);
+                Attribute attr2 = translate(attr, translations);
+                if (attr2 != attr)
+                    attrsEqual = false;
+                attrArray2[i] = attr2;
+            }
+            if ((constant_pool2 == constant_pool) && attrsEqual)
+                attributes2 = attributes;
+            else
+                attributes2 = new Attributes(constant_pool2, attrArray2);
+            translations.put(attributes, attributes2);
+        }
+        return attributes2;
+    }
+
+    Attribute translate(Attribute attribute, Map<Object,Object> translations) {
+        Attribute attribute2 = (Attribute) translations.get(attribute);
+        if (attribute2 == null) {
+            attribute2 = attribute; // don't support translation within attributes yet
+                                    // (what about Code attribute)
+            translations.put(attribute, attribute2);
+        }
+        return attribute2;
+    }
+
+    private static <T> boolean equal(T[] a1, T[] a2) {
+        if (a1 == null || a2 == null)
+            return (a1 == a2);
+        if (a1.length != a2.length)
+            return false;
+        for (int i = 0; i < a1.length; i++) {
+            if (a1[i] != a2[i])
+                return false;
+        }
+        return true;
+    }
+
+    public CPInfo visitClass(CONSTANT_Class_info info, Map<Object, Object> translations) {
+        CONSTANT_Class_info info2 = (CONSTANT_Class_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_Class_info(cp2, info.name_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitDouble(CONSTANT_Double_info info, Map<Object, Object> translations) {
+        CONSTANT_Double_info info2 = (CONSTANT_Double_info) translations.get(info);
+        if (info2 == null) {
+            info2 = info;
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitFieldref(CONSTANT_Fieldref_info info, Map<Object, Object> translations) {
+        CONSTANT_Fieldref_info info2 = (CONSTANT_Fieldref_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_Fieldref_info(cp2, info.class_index, info.name_and_type_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitFloat(CONSTANT_Float_info info, Map<Object, Object> translations) {
+        CONSTANT_Float_info info2 = (CONSTANT_Float_info) translations.get(info);
+        if (info2 == null) {
+            info2 = info;
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitInteger(CONSTANT_Integer_info info, Map<Object, Object> translations) {
+        CONSTANT_Integer_info info2 = (CONSTANT_Integer_info) translations.get(info);
+        if (info2 == null) {
+            info2 = info;
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Map<Object, Object> translations) {
+        CONSTANT_InterfaceMethodref_info info2 = (CONSTANT_InterfaceMethodref_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_InterfaceMethodref_info(cp2, info.class_index, info.name_and_type_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitLong(CONSTANT_Long_info info, Map<Object, Object> translations) {
+        CONSTANT_Long_info info2 = (CONSTANT_Long_info) translations.get(info);
+        if (info2 == null) {
+            info2 = info;
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitNameAndType(CONSTANT_NameAndType_info info, Map<Object, Object> translations) {
+        CONSTANT_NameAndType_info info2 = (CONSTANT_NameAndType_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_NameAndType_info(cp2, info.name_index, info.type_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitMethodref(CONSTANT_Methodref_info info, Map<Object, Object> translations) {
+        CONSTANT_Methodref_info info2 = (CONSTANT_Methodref_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_Methodref_info(cp2, info.class_index, info.name_and_type_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitString(CONSTANT_String_info info, Map<Object, Object> translations) {
+        CONSTANT_String_info info2 = (CONSTANT_String_info) translations.get(info);
+        if (info2 == null) {
+            ConstantPool cp2 = translate(info.cp, translations);
+            if (cp2 == info.cp)
+                info2 = info;
+            else
+                info2 = new CONSTANT_String_info(cp2, info.string_index);
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+    public CPInfo visitUtf8(CONSTANT_Utf8_info info, Map<Object, Object> translations) {
+        CONSTANT_Utf8_info info2 = (CONSTANT_Utf8_info) translations.get(info);
+        if (info2 == null) {
+            info2 = info;
+            translations.put(info, info2);
+        }
+        return info;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ClassWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,689 @@
+/*
+ * 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.tools.classfile;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import static com.sun.tools.classfile.Annotation.*;
+import static com.sun.tools.classfile.ConstantPool.*;
+import static com.sun.tools.classfile.StackMapTable_attribute.*;
+import static com.sun.tools.classfile.StackMapTable_attribute.verification_type_info.*;
+
+/**
+ * Write a ClassFile data structure to a file or stream.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClassWriter {
+    public ClassWriter() {
+        attributeWriter = new AttributeWriter();
+        constantPoolWriter = new ConstantPoolWriter();
+        out = new ClassOutputStream();
+    }
+
+    /**
+     * Write a ClassFile data structure to a file.
+     */
+    public void write(ClassFile classFile, File f) throws IOException {
+        FileOutputStream f_out = new FileOutputStream(f);
+        try {
+            write(classFile, f_out);
+        } finally {
+            f_out.close();
+        }
+    }
+
+    /**
+     * Write a ClassFile data structure to a stream.
+     */
+    public void write(ClassFile classFile, OutputStream s) throws IOException {
+        this.classFile = classFile;
+        out.reset();
+        write();
+        out.writeTo(s);
+    }
+
+    protected void write() throws IOException {
+        writeHeader();
+        writeConstantPool();
+        writeAccessFlags(classFile.access_flags);
+        writeClassInfo();
+        writeFields();
+        writeMethods();
+        writeAttributes(classFile.attributes);
+    }
+
+    protected void writeHeader() {
+        out.writeInt(classFile.magic);
+        out.writeShort(classFile.minor_version);
+        out.writeShort(classFile.major_version);
+    }
+
+    protected void writeAccessFlags(AccessFlags flags) {
+        out.writeShort(flags.flags);
+    }
+
+    protected void writeAttributes(Attributes attributes) {
+        int size = attributes.size();
+        out.writeShort(size);
+        for (Attribute attr: attributes)
+            attributeWriter.write(attr, out);
+    }
+
+    protected void writeClassInfo() {
+        out.writeShort(classFile.this_class);
+        out.writeShort(classFile.super_class);
+        int[] interfaces = classFile.interfaces;
+        out.writeShort(interfaces.length);
+        for (int i: interfaces)
+            out.writeShort(i);
+    }
+
+    protected void writeDescriptor(Descriptor d) {
+        out.writeShort(d.index);
+    }
+
+    protected void writeConstantPool() {
+        ConstantPool pool = classFile.constant_pool;
+        int size = pool.size();
+        out.writeShort(size);
+        try {
+            for (int i = 1; i < size; ) {
+                i += constantPoolWriter.write(pool.get(i), out);
+            }
+        } catch (ConstantPoolException e) {
+            throw new Error(e); // ??
+        }
+    }
+
+    protected void writeFields() throws IOException {
+        Field[] fields = classFile.fields;
+        out.writeShort(fields.length);
+        for (Field f: fields)
+            writeField(f);
+    }
+
+    protected void writeField(Field f) throws IOException {
+        writeAccessFlags(f.access_flags);
+        out.writeShort(f.name_index);
+        writeDescriptor(f.descriptor);
+        writeAttributes(f.attributes);
+    }
+
+    protected void writeMethods() throws IOException {
+        Method[] methods = classFile.methods;
+        out.writeShort(methods.length);
+        for (Method m: methods) {
+            writeMethod(m);
+        }
+    }
+
+    protected void writeMethod(Method m) throws IOException {
+        writeAccessFlags(m.access_flags);
+        out.writeShort(m.name_index);
+        writeDescriptor(m.descriptor);
+        writeAttributes(m.attributes);
+    }
+
+    protected ClassFile classFile;
+    protected ClassOutputStream out;
+    protected AttributeWriter attributeWriter;
+    protected ConstantPoolWriter constantPoolWriter;
+
+    /**
+     * Subtype of ByteArrayOutputStream with the convenience methods of
+     * a DataOutputStream. Since ByteArrayOutputStream does not throw
+     * IOException, there are no exceptions from the additional
+     * convenience methods either,
+     */
+    protected static class ClassOutputStream extends ByteArrayOutputStream {
+        public ClassOutputStream() {
+            d = new DataOutputStream(this);
+        }
+
+        public void writeByte(int value) {
+            try {
+                d.writeByte(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeShort(int value) {
+            try {
+                d.writeShort(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeInt(int value) {
+            try {
+                d.writeInt(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeLong(long value) {
+            try {
+                d.writeLong(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeFloat(float value) {
+            try {
+                d.writeFloat(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeDouble(double value) {
+            try {
+                d.writeDouble(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeUTF(String value) {
+            try {
+                d.writeUTF(value);
+            } catch (IOException ignore) {
+            }
+        }
+
+        public void writeTo(ClassOutputStream s) {
+            try {
+                super.writeTo(s);
+            } catch (IOException ignore) {
+            }
+        }
+
+        private DataOutputStream d;
+    }
+
+    /**
+     * Writer for the entries in the constant pool.
+     */
+    protected static class ConstantPoolWriter
+           implements ConstantPool.Visitor<Integer,ClassOutputStream> {
+        protected int write(CPInfo info, ClassOutputStream out) {
+            out.writeByte(info.getTag());
+            return info.accept(this, out);
+        }
+
+        public Integer visitClass(CONSTANT_Class_info info, ClassOutputStream out) {
+            out.writeShort(info.name_index);
+            return 1;
+        }
+
+        public Integer visitDouble(CONSTANT_Double_info info, ClassOutputStream out) {
+            out.writeDouble(info.value);
+            return 2;
+        }
+
+        public Integer visitFieldref(CONSTANT_Fieldref_info info, ClassOutputStream out) {
+            writeRef(info, out);
+            return 1;
+        }
+
+        public Integer visitFloat(CONSTANT_Float_info info, ClassOutputStream out) {
+            out.writeFloat(info.value);
+            return 1;
+        }
+
+        public Integer visitInteger(CONSTANT_Integer_info info, ClassOutputStream out) {
+            out.writeInt(info.value);
+            return 1;
+        }
+
+        public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, ClassOutputStream out) {
+            writeRef(info, out);
+            return 1;
+        }
+
+        public Integer visitLong(CONSTANT_Long_info info, ClassOutputStream out) {
+            out.writeLong(info.value);
+            return 2;
+        }
+
+        public Integer visitNameAndType(CONSTANT_NameAndType_info info, ClassOutputStream out) {
+            out.writeShort(info.name_index);
+            out.writeShort(info.type_index);
+            return 1;
+        }
+
+        public Integer visitMethodref(CONSTANT_Methodref_info info, ClassOutputStream out) {
+            return writeRef(info, out);
+        }
+
+        public Integer visitString(CONSTANT_String_info info, ClassOutputStream out) {
+            out.writeShort(info.string_index);
+            return 1;
+        }
+
+        public Integer visitUtf8(CONSTANT_Utf8_info info, ClassOutputStream out) {
+            out.writeUTF(info.value);
+            return 1;
+        }
+
+        protected Integer writeRef(CPRefInfo info, ClassOutputStream out) {
+            out.writeShort(info.class_index);
+            out.writeShort(info.name_and_type_index);
+            return 1;
+        }
+    }
+
+    /**
+     * Writer for the different types of attribute.
+     */
+    protected static class AttributeWriter implements Attribute.Visitor<Void,ClassOutputStream> {
+        public void write(Attributes attributes, ClassOutputStream out) {
+            int size = attributes.size();
+            out.writeShort(size);
+            for (Attribute a: attributes)
+                write(a, out);
+        }
+
+        // Note: due to the use of shared resources, this method is not reentrant.
+        public void write(Attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.attribute_name_index);
+            sharedOut.reset();
+            attr.accept(this, sharedOut);
+            out.writeInt(sharedOut.size());
+            sharedOut.writeTo(out);
+        }
+
+        protected ClassOutputStream sharedOut = new ClassOutputStream();
+        protected AnnotationWriter annotationWriter = new AnnotationWriter();
+
+        public Void visitDefault(DefaultAttribute attr, ClassOutputStream out) {
+            out.write(attr.info, 0, attr.info.length);
+            return null;
+        }
+
+        public Void visitAnnotationDefault(AnnotationDefault_attribute attr, ClassOutputStream out) {
+            annotationWriter.write(attr.default_value, out);
+            return null;
+        }
+
+        public Void visitCharacterRangeTable(CharacterRangeTable_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.character_range_table.length);
+            for (CharacterRangeTable_attribute.Entry e: attr.character_range_table)
+                writeCharacterRangeTableEntry(e, out);
+            return null;
+        }
+
+        protected void writeCharacterRangeTableEntry(CharacterRangeTable_attribute.Entry entry, ClassOutputStream out) {
+            out.writeShort(entry.start_pc);
+            out.writeShort(entry.end_pc);
+            out.writeInt(entry.character_range_start);
+            out.writeInt(entry.character_range_end);
+            out.writeShort(entry.flags);
+        }
+
+        public Void visitCode(Code_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.max_stack);
+            out.writeShort(attr.max_locals);
+            out.writeInt(attr.code.length);
+            out.write(attr.code, 0, attr.code.length);
+            out.writeShort(attr.exception_table.length);
+            for (Code_attribute.Exception_data e: attr.exception_table)
+                writeExceptionTableEntry(e, out);
+            new AttributeWriter().write(attr.attributes, out);
+            return null;
+        }
+
+        protected void writeExceptionTableEntry(Code_attribute.Exception_data exception_data, ClassOutputStream out) {
+            out.writeShort(exception_data.start_pc);
+            out.writeShort(exception_data.end_pc);
+            out.writeShort(exception_data.handler_pc);
+            out.writeShort(exception_data.catch_type);
+        }
+
+        public Void visitCompilationID(CompilationID_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.compilationID_index);
+            return null;
+        }
+
+        public Void visitConstantValue(ConstantValue_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.constantvalue_index);
+            return null;
+        }
+
+        public Void visitDeprecated(Deprecated_attribute attr, ClassOutputStream out) {
+            return null;
+        }
+
+        public Void visitEnclosingMethod(EnclosingMethod_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.class_index);
+            out.writeShort(attr.method_index);
+            return null;
+        }
+
+        public Void visitExceptions(Exceptions_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.exception_index_table.length);
+            for (int i: attr.exception_index_table)
+                out.writeShort(i);
+            return null;
+        }
+
+        public Void visitInnerClasses(InnerClasses_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.classes.length);
+            for (InnerClasses_attribute.Info info: attr.classes)
+                writeInnerClassesInfo(info, out);
+            return null;
+        }
+
+        protected void writeInnerClassesInfo(InnerClasses_attribute.Info info, ClassOutputStream out) {
+            out.writeShort(info.inner_class_info_index);
+            out.writeShort(info.outer_class_info_index);
+            out.writeShort(info.inner_name_index);
+            writeAccessFlags(info.inner_class_access_flags, out);
+        }
+
+        public Void visitLineNumberTable(LineNumberTable_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.line_number_table.length);
+            for (LineNumberTable_attribute.Entry e: attr.line_number_table)
+                writeLineNumberTableEntry(e, out);
+            return null;
+        }
+
+        protected void writeLineNumberTableEntry(LineNumberTable_attribute.Entry entry, ClassOutputStream out) {
+            out.writeShort(entry.start_pc);
+            out.writeShort(entry.line_number);
+        }
+
+        public Void visitLocalVariableTable(LocalVariableTable_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.local_variable_table.length);
+            for (LocalVariableTable_attribute.Entry e: attr.local_variable_table)
+                writeLocalVariableTableEntry(e, out);
+            return null;
+        }
+
+        protected void writeLocalVariableTableEntry(LocalVariableTable_attribute.Entry entry, ClassOutputStream out) {
+            out.writeShort(entry.start_pc);
+            out.writeShort(entry.length);
+            out.writeShort(entry.name_index);
+            out.writeShort(entry.descriptor_index);
+            out.writeShort(entry.index);
+        }
+
+        public Void visitLocalVariableTypeTable(LocalVariableTypeTable_attribute attr, ClassOutputStream out) {
+            out.writeByte(attr.local_variable_table.length);
+            for (LocalVariableTypeTable_attribute.Entry e: attr.local_variable_table)
+                writeLocalVariableTypeTableEntry(e, out);
+            return null;
+        }
+
+        protected void writeLocalVariableTypeTableEntry(LocalVariableTypeTable_attribute.Entry entry, ClassOutputStream out) {
+            out.writeShort(entry.start_pc);
+            out.writeShort(entry.length);
+            out.writeShort(entry.name_index);
+            out.writeShort(entry.signature_index);
+            out.writeShort(entry.index);
+        }
+
+        public Void visitModule(Module_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.module_name);
+            return null;
+        }
+
+        public Void visitModuleExportTable(ModuleExportTable_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.export_type_table.length);
+            for (int i: attr.export_type_table)
+                out.writeShort(i);
+            return null;
+        }
+
+        public Void visitModuleMemberTable(ModuleMemberTable_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.package_member_table.length);
+            for (int i: attr.package_member_table)
+                out.writeShort(i);
+            return null;
+        }
+
+        public Void visitRuntimeVisibleAnnotations(RuntimeVisibleAnnotations_attribute attr, ClassOutputStream out) {
+            annotationWriter.write(attr.annotations, out);
+            return null;
+        }
+
+        public Void visitRuntimeInvisibleAnnotations(RuntimeInvisibleAnnotations_attribute attr, ClassOutputStream out) {
+            annotationWriter.write(attr.annotations, out);
+            return null;
+        }
+
+        public Void visitRuntimeVisibleParameterAnnotations(RuntimeVisibleParameterAnnotations_attribute attr, ClassOutputStream out) {
+            out.writeByte(attr.parameter_annotations.length);
+            for (Annotation[] annos: attr.parameter_annotations)
+                annotationWriter.write(annos, out);
+            return null;
+        }
+
+        public Void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisibleParameterAnnotations_attribute attr, ClassOutputStream out) {
+            out.writeByte(attr.parameter_annotations.length);
+            for (Annotation[] annos: attr.parameter_annotations)
+                annotationWriter.write(annos, out);
+            return null;
+        }
+
+        public Void visitSignature(Signature_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.signature_index);
+            return null;
+        }
+
+        public Void visitSourceDebugExtension(SourceDebugExtension_attribute attr, ClassOutputStream out) {
+            out.write(attr.debug_extension, 0, attr.debug_extension.length);
+            return null;
+        }
+
+        public Void visitSourceFile(SourceFile_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.sourcefile_index);
+            return null;
+        }
+
+        public Void visitSourceID(SourceID_attribute attr, ClassOutputStream out) {
+            out.writeShort(attr.sourceID_index);
+            return null;
+        }
+
+        public Void visitStackMap(StackMap_attribute attr, ClassOutputStream out) {
+            if (stackMapWriter == null)
+                stackMapWriter = new StackMapTableWriter();
+
+            out.writeShort(attr.entries.length);
+            for (stack_map_frame f: attr.entries)
+                stackMapWriter.write(f, out);
+            return null;
+        }
+
+        public Void visitStackMapTable(StackMapTable_attribute attr, ClassOutputStream out) {
+            if (stackMapWriter == null)
+                stackMapWriter = new StackMapTableWriter();
+
+            out.writeShort(attr.entries.length);
+            for (stack_map_frame f: attr.entries)
+                stackMapWriter.write(f, out);
+            return null;
+        }
+
+        public Void visitSynthetic(Synthetic_attribute attr, ClassOutputStream out) {
+            return null;
+        }
+
+        protected void writeAccessFlags(AccessFlags flags, ClassOutputStream p) {
+            sharedOut.writeShort(flags.flags);
+        }
+
+        protected StackMapTableWriter stackMapWriter;
+    }
+
+    /**
+     * Writer for the frames of StackMap and StackMapTable attributes.
+     */
+    protected static class StackMapTableWriter
+            implements stack_map_frame.Visitor<Void,ClassOutputStream> {
+
+        public void write(stack_map_frame frame, ClassOutputStream out) {
+            out.write(frame.frame_type);
+            frame.accept(this, out);
+        }
+
+        public Void visit_same_frame(same_frame frame, ClassOutputStream p) {
+            return null;
+        }
+
+        public Void visit_same_locals_1_stack_item_frame(same_locals_1_stack_item_frame frame, ClassOutputStream out) {
+            writeVerificationTypeInfo(frame.stack[0], out);
+            return null;
+        }
+
+        public Void visit_same_locals_1_stack_item_frame_extended(same_locals_1_stack_item_frame_extended frame, ClassOutputStream out) {
+            out.writeShort(frame.offset_delta);
+            writeVerificationTypeInfo(frame.stack[0], out);
+            return null;
+        }
+
+        public Void visit_chop_frame(chop_frame frame, ClassOutputStream out) {
+            out.writeShort(frame.offset_delta);
+            return null;
+        }
+
+        public Void visit_same_frame_extended(same_frame_extended frame, ClassOutputStream out) {
+            out.writeShort(frame.offset_delta);
+            return null;
+        }
+
+        public Void visit_append_frame(append_frame frame, ClassOutputStream out) {
+            out.writeShort(frame.offset_delta);
+            for (verification_type_info l: frame.locals)
+                writeVerificationTypeInfo(l, out);
+            return null;
+        }
+
+        public Void visit_full_frame(full_frame frame, ClassOutputStream out) {
+            out.writeShort(frame.offset_delta);
+            out.writeShort(frame.locals.length);
+            for (verification_type_info l: frame.locals)
+                writeVerificationTypeInfo(l, out);
+            out.writeShort(frame.stack.length);
+            for (verification_type_info s: frame.stack)
+                writeVerificationTypeInfo(s, out);
+            return null;
+        }
+
+        protected void writeVerificationTypeInfo(verification_type_info info,
+                ClassOutputStream out)  {
+            out.write(info.tag);
+            switch (info.tag) {
+            case ITEM_Top:
+            case ITEM_Integer:
+            case ITEM_Float:
+            case ITEM_Long:
+            case ITEM_Double:
+            case ITEM_Null:
+            case ITEM_UninitializedThis:
+                break;
+
+            case ITEM_Object:
+                Object_variable_info o = (Object_variable_info) info;
+                out.writeShort(o.cpool_index);
+                break;
+
+            case ITEM_Uninitialized:
+                Uninitialized_variable_info u = (Uninitialized_variable_info) info;
+                out.writeShort(u.offset);
+                break;
+
+            default:
+                throw new Error();
+            }
+        }
+    }
+
+    /**
+     * Writer for annotations and the values they contain.
+     */
+    protected static class AnnotationWriter
+            implements Annotation.element_value.Visitor<Void,ClassOutputStream> {
+        public void write(Annotation[] annos, ClassOutputStream out) {
+            out.writeShort(annos.length);
+            for (Annotation anno: annos)
+                write(anno, out);
+        }
+
+        public void write(Annotation anno, ClassOutputStream out) {
+            out.writeShort(anno.type_index);
+            out.writeShort(anno.element_value_pairs.length);
+            for (element_value_pair p: anno.element_value_pairs)
+                write(p, out);
+        }
+
+        public void write(element_value_pair pair, ClassOutputStream out) {
+            out.writeShort(pair.element_name_index);
+            write(pair.value, out);
+        }
+
+        public void write(element_value ev, ClassOutputStream out) {
+            out.writeByte(ev.tag);
+            ev.accept(this, out);
+        }
+
+        public Void visitPrimitive(Primitive_element_value ev, ClassOutputStream out) {
+            out.writeShort(ev.const_value_index);
+            return null;
+        }
+
+        public Void visitEnum(Enum_element_value ev, ClassOutputStream out) {
+            out.writeShort(ev.type_name_index);
+            out.writeShort(ev.const_name_index);
+            return null;
+        }
+
+        public Void visitClass(Class_element_value ev, ClassOutputStream out) {
+            out.writeShort(ev.class_info_index);
+            return null;
+        }
+
+        public Void visitAnnotation(Annotation_element_value ev, ClassOutputStream out) {
+            write(ev.annotation_value, out);
+            return null;
+        }
+
+        public Void visitArray(Array_element_value ev, ClassOutputStream out) {
+            out.writeShort(ev.num_values);
+            for (element_value v: ev.values)
+                write(v, out);
+            return null;
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Code_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,123 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.3.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Code_attribute extends Attribute {
+    public class InvalidIndex extends AttributeException {
+        InvalidIndex(int index) {
+            this.index = index;
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n
+            return "invalid index " + index + " in Code attribute";
+        }
+
+        public final int index;
+    }
+
+    Code_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, ConstantPoolException {
+        super(name_index, length);
+        max_stack = cr.readUnsignedShort();
+        max_locals = cr.readUnsignedShort();
+        code_length = cr.readInt();
+        code = new byte[code_length];
+        cr.readFully(code);
+        exception_table_langth = cr.readUnsignedShort();
+        exception_table = new Exception_data[exception_table_langth];
+        for (int i = 0; i < exception_table_langth; i++)
+            exception_table[i] = new Exception_data(cr);
+        attributes = new Attributes(cr);
+    }
+
+    public int getByte(int offset) throws InvalidIndex {
+        if (offset < 0 || offset >= code.length)
+            throw new InvalidIndex(offset);
+        return code[offset];
+    }
+
+    public int getUnsignedByte(int offset) throws InvalidIndex {
+        if (offset < 0 || offset >= code.length)
+            throw new InvalidIndex(offset);
+        return code[offset] & 0xff;
+    }
+
+    public int getShort(int offset) throws InvalidIndex {
+        if (offset < 0 || offset + 1 >= code.length)
+            throw new InvalidIndex(offset);
+        return (code[offset] << 8) | (code[offset + 1] & 0xFF);
+    }
+
+    public int getUnsignedShort(int offset) throws InvalidIndex {
+        if (offset < 0 || offset + 1 >= code.length)
+            throw new InvalidIndex(offset);
+        return ((code[offset] << 8) | (code[offset + 1] & 0xFF)) & 0xFFFF;
+    }
+
+    public int getInt(int offset) throws InvalidIndex {
+        if (offset < 0 || offset + 3 >= code.length)
+            throw new InvalidIndex(offset);
+        return (getShort(offset) << 16) | (getShort(offset + 2) & 0xFFFF);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitCode(this, data);
+    }
+
+    public final int max_stack;
+    public final int max_locals;
+    public final int code_length;
+    public final byte[] code;
+    public final int exception_table_langth;
+    public final Exception_data[] exception_table;
+    public final Attributes attributes;
+
+    public class Exception_data {
+        Exception_data(ClassReader cr) throws IOException {
+            start_pc = cr.readUnsignedShort();
+            end_pc = cr.readUnsignedShort();
+            handler_pc = cr.readUnsignedShort();
+            catch_type = cr.readUnsignedShort();
+        }
+
+        public final int start_pc;
+        public final int end_pc;
+        public final int handler_pc;
+        public final int catch_type;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/CompilationID_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,62 @@
+/*
+ * 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.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class CompilationID_attribute extends Attribute {
+
+    CompilationID_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        compilationID_index = cr.readUnsignedShort();
+    }
+
+    public CompilationID_attribute(ConstantPool constant_pool, int compilationID_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.CompilationID), compilationID_index);
+    }
+
+    public CompilationID_attribute(int name_index, int compilationID_index) {
+        super(name_index, 2);
+        this.compilationID_index = compilationID_index;
+    }
+
+    String getCompilationID(ConstantPool constant_pool)
+            throws ConstantPoolException {
+        return constant_pool.getUTF8Value(compilationID_index);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitCompilationID(this, data);
+    }
+
+    public final int compilationID_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ConstantPool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,563 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.5.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ConstantPool {
+
+    public class InvalidIndex extends ConstantPoolException {
+        InvalidIndex(int index) {
+            super(index);
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n
+            return "invalid index #" + index;
+        }
+    }
+
+    public class UnexpectedEntry extends ConstantPoolException {
+        UnexpectedEntry(int index, int expected_tag, int found_tag) {
+            super(index);
+            this.expected_tag = expected_tag;
+            this.found_tag = found_tag;
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n?
+            return "unexpected entry at #" + index + " -- expected tag " + expected_tag + ", found " + found_tag;
+        }
+
+        public final int expected_tag;
+        public final int found_tag;
+    }
+
+    public class InvalidEntry extends ConstantPoolException {
+        InvalidEntry(int index, int tag) {
+            super(index);
+            this.tag = tag;
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n?
+            return "unexpected tag at #" + index + ": " + tag;
+        }
+
+        public final int tag;
+    }
+
+    public class EntryNotFound extends ConstantPoolException {
+        EntryNotFound(Object value) {
+            super(-1);
+            this.value = value;
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n?
+            return "value not found: " + value;
+        }
+
+        public final Object value;
+    }
+
+    public static final int CONSTANT_Utf8 = 1;
+    public static final int CONSTANT_Integer = 3;
+    public static final int CONSTANT_Float = 4;
+    public static final int CONSTANT_Long = 5;
+    public static final int CONSTANT_Double = 6;
+    public static final int CONSTANT_Class = 7;
+    public static final int CONSTANT_String = 8;
+    public static final int CONSTANT_Fieldref = 9;
+    public static final int CONSTANT_Methodref = 10;
+    public static final int CONSTANT_InterfaceMethodref = 11;
+    public static final int CONSTANT_NameAndType = 12;
+
+    ConstantPool(ClassReader cr) throws IOException, InvalidEntry {
+        int count = cr.readUnsignedShort();
+        pool = new CPInfo[count];
+        for (int i = 1; i < count; i++) {
+            int tag = cr.readUnsignedByte();
+            switch (tag) {
+            case CONSTANT_Class:
+                pool[i] = new CONSTANT_Class_info(this, cr);
+                break;
+
+            case CONSTANT_Double:
+                pool[i] = new CONSTANT_Double_info(cr);
+                i++;
+                break;
+
+            case CONSTANT_Fieldref:
+                pool[i] = new CONSTANT_Fieldref_info(this, cr);
+                break;
+
+            case CONSTANT_Float:
+                pool[i] = new CONSTANT_Float_info(cr);
+                break;
+
+            case CONSTANT_Integer:
+                pool[i] = new CONSTANT_Integer_info(cr);
+                break;
+
+            case CONSTANT_InterfaceMethodref:
+                pool[i] = new CONSTANT_InterfaceMethodref_info(this, cr);
+                break;
+
+            case CONSTANT_Long:
+                pool[i] = new CONSTANT_Long_info(cr);
+                i++;
+                break;
+
+            case CONSTANT_Methodref:
+                pool[i] = new CONSTANT_Methodref_info(this, cr);
+                break;
+
+            case CONSTANT_NameAndType:
+                pool[i] = new CONSTANT_NameAndType_info(this, cr);
+                break;
+
+            case CONSTANT_String:
+                pool[i] = new CONSTANT_String_info(this, cr);
+                break;
+
+            case CONSTANT_Utf8:
+                pool[i] = new CONSTANT_Utf8_info(cr);
+                break;
+
+            default:
+                throw new InvalidEntry(i, tag);
+            }
+        }
+    }
+
+    public ConstantPool(CPInfo[] pool) {
+        this.pool = pool;
+    }
+
+    public int size() {
+        return pool.length;
+    }
+
+    public CPInfo get(int index) throws InvalidIndex {
+        if (index <= 0 || index >= pool.length)
+            throw new InvalidIndex(index);
+        CPInfo info = pool[index];
+        if (info == null) {
+            // this occurs for indices referencing the "second half" of an
+            // 8 byte constant, such as CONSTANT_Double or CONSTANT_Long
+            throw new InvalidIndex(index);
+        }
+        return pool[index];
+    }
+
+    private CPInfo get(int index, int expected_type) throws InvalidIndex, UnexpectedEntry {
+        CPInfo info = get(index);
+        if (info.getTag() != expected_type)
+            throw new UnexpectedEntry(index, expected_type, info.getTag());
+        return info;
+    }
+
+    public CONSTANT_Utf8_info getUTF8Info(int index) throws InvalidIndex, UnexpectedEntry {
+        return ((CONSTANT_Utf8_info) get(index, CONSTANT_Utf8));
+    }
+
+    public CONSTANT_Class_info getClassInfo(int index) throws InvalidIndex, UnexpectedEntry {
+        return ((CONSTANT_Class_info) get(index, CONSTANT_Class));
+    }
+
+    public CONSTANT_NameAndType_info getNameAndTypeInfo(int index) throws InvalidIndex, UnexpectedEntry {
+        return ((CONSTANT_NameAndType_info) get(index, CONSTANT_NameAndType));
+    }
+
+    public String getUTF8Value(int index) throws InvalidIndex, UnexpectedEntry {
+        return getUTF8Info(index).value;
+    }
+
+    public int getUTF8Index(String value) throws EntryNotFound {
+        for (int i = 1; i < pool.length; i++) {
+            CPInfo info = pool[i];
+            if (info instanceof CONSTANT_Utf8_info &&
+                    ((CONSTANT_Utf8_info) info).value.equals(value))
+                return i;
+        }
+        throw new EntryNotFound(value);
+    }
+
+    private CPInfo[] pool;
+
+    public interface Visitor<R,P> {
+        R visitClass(CONSTANT_Class_info info, P p);
+        R visitDouble(CONSTANT_Double_info info, P p);
+        R visitFieldref(CONSTANT_Fieldref_info info, P p);
+        R visitFloat(CONSTANT_Float_info info, P p);
+        R visitInteger(CONSTANT_Integer_info info, P p);
+        R visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, P p);
+        R visitLong(CONSTANT_Long_info info, P p);
+        R visitNameAndType(CONSTANT_NameAndType_info info, P p);
+        R visitMethodref(CONSTANT_Methodref_info info, P p);
+        R visitString(CONSTANT_String_info info, P p);
+        R visitUtf8(CONSTANT_Utf8_info info, P p);
+    }
+
+    public static abstract class CPInfo {
+        CPInfo() {
+            this.cp = null;
+        }
+
+        CPInfo(ConstantPool cp) {
+            this.cp = cp;
+        }
+
+        public abstract int getTag();
+
+        public abstract <R,D> R accept(Visitor<R,D> visitor, D data);
+
+        protected final ConstantPool cp;
+    }
+
+    public static abstract class CPRefInfo extends CPInfo {
+        protected CPRefInfo(ConstantPool cp, ClassReader cr, int tag) throws IOException {
+            super(cp);
+            this.tag = tag;
+            class_index = cr.readUnsignedShort();
+            name_and_type_index = cr.readUnsignedShort();
+        }
+
+        protected CPRefInfo(ConstantPool cp, int tag, int class_index, int name_and_type_index) {
+            super(cp);
+            this.tag = tag;
+            this.class_index = class_index;
+            this.name_and_type_index = name_and_type_index;
+        }
+
+        public int getTag() {
+            return tag;
+        }
+
+        public CONSTANT_Class_info getClassInfo() throws ConstantPoolException {
+            return cp.getClassInfo(class_index);
+        }
+
+        public String getClassName() throws ConstantPoolException {
+            return cp.getClassInfo(class_index).getName();
+        }
+
+        public CONSTANT_NameAndType_info getNameAndTypeInfo() throws ConstantPoolException {
+            return cp.getNameAndTypeInfo(name_and_type_index);
+        }
+
+        public final int tag;
+        public final int class_index;
+        public final int name_and_type_index;
+    }
+
+    public static class CONSTANT_Class_info extends CPInfo {
+        CONSTANT_Class_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp);
+            name_index = cr.readUnsignedShort();
+        }
+
+        public CONSTANT_Class_info(ConstantPool cp, int name_index) {
+            super(cp);
+            this.name_index = name_index;
+        }
+
+        public int getTag() {
+            return CONSTANT_Class;
+        }
+
+        public String getName() throws ConstantPoolException {
+            return cp.getUTF8Value(name_index);
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Class_info[name_index: " + name_index + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitClass(this, data);
+        }
+
+        public final int name_index;
+    }
+
+    public static class CONSTANT_Double_info extends CPInfo {
+        CONSTANT_Double_info(ClassReader cr) throws IOException {
+            value = cr.readDouble();
+        }
+
+        public CONSTANT_Double_info(double value) {
+            this.value = value;
+        }
+
+        public int getTag() {
+            return CONSTANT_Double;
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Double_info[value: " + value + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitDouble(this, data);
+        }
+
+        public final double value;
+    }
+
+    public static class CONSTANT_Fieldref_info extends CPRefInfo {
+        CONSTANT_Fieldref_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp, cr, CONSTANT_Fieldref);
+        }
+
+        public CONSTANT_Fieldref_info(ConstantPool cp, int class_index, int name_and_type_index) {
+            super(cp, CONSTANT_Fieldref, class_index, name_and_type_index);
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Fieldref_info[class_index: " + class_index + ", name_and_type_index: " + name_and_type_index + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitFieldref(this, data);
+        }
+    }
+
+    public static class CONSTANT_Float_info extends CPInfo {
+        CONSTANT_Float_info(ClassReader cr) throws IOException {
+            value = cr.readFloat();
+        }
+
+        public CONSTANT_Float_info(float value) {
+            this.value = value;
+        }
+
+        public int getTag() {
+            return CONSTANT_Float;
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Float_info[value: " + value + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitFloat(this, data);
+        }
+
+        public final float value;
+    }
+
+    public static class CONSTANT_Integer_info extends CPInfo {
+        CONSTANT_Integer_info(ClassReader cr) throws IOException {
+            value = cr.readInt();
+        }
+
+        public CONSTANT_Integer_info(int value) {
+            this.value = value;
+        }
+
+        public int getTag() {
+            return CONSTANT_Integer;
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Integer_info[value: " + value + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitInteger(this, data);
+        }
+
+        public final int value;
+    }
+
+    public static class CONSTANT_InterfaceMethodref_info extends CPRefInfo {
+        CONSTANT_InterfaceMethodref_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp, cr, CONSTANT_InterfaceMethodref);
+        }
+
+        public CONSTANT_InterfaceMethodref_info(ConstantPool cp, int class_index, int name_and_type_index) {
+            super(cp, CONSTANT_InterfaceMethodref, class_index, name_and_type_index);
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_InterfaceMethodref_info[class_index: " + class_index + ", name_and_type_index: " + name_and_type_index + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitInterfaceMethodref(this, data);
+        }
+    }
+
+    public static class CONSTANT_Long_info extends CPInfo {
+        CONSTANT_Long_info(ClassReader cr) throws IOException {
+            value = cr.readLong();
+        }
+
+        public CONSTANT_Long_info(long value) {
+            this.value = value;
+        }
+
+        public int getTag() {
+            return CONSTANT_Long;
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Long_info[value: " + value + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitLong(this, data);
+        }
+
+        public final long value;
+    }
+
+    public static class CONSTANT_Methodref_info extends CPRefInfo {
+        CONSTANT_Methodref_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp, cr, CONSTANT_Methodref);
+        }
+
+        public CONSTANT_Methodref_info(ConstantPool cp, int class_index, int name_and_type_index) {
+            super(cp, CONSTANT_Methodref, class_index, name_and_type_index);
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Methodref_info[class_index: " + class_index + ", name_and_type_index: " + name_and_type_index + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitMethodref(this, data);
+        }
+    }
+
+    public static class CONSTANT_NameAndType_info extends CPInfo {
+        CONSTANT_NameAndType_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp);
+            name_index = cr.readUnsignedShort();
+            type_index = cr.readUnsignedShort();
+        }
+
+        public CONSTANT_NameAndType_info(ConstantPool cp, int name_index, int type_index) {
+            super(cp);
+            this.name_index = name_index;
+            this.type_index = type_index;
+        }
+
+        public int getTag() {
+            return CONSTANT_NameAndType;
+        }
+
+        public String getName() throws ConstantPoolException {
+            return cp.getUTF8Value(name_index);
+        }
+
+        public String getType() throws ConstantPoolException {
+            return cp.getUTF8Value(type_index);
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitNameAndType(this, data);
+        }
+
+        public final int name_index;
+        public final int type_index;
+    }
+
+    public static class CONSTANT_String_info extends CPInfo {
+        CONSTANT_String_info(ConstantPool cp, ClassReader cr) throws IOException {
+            super(cp);
+            string_index = cr.readUnsignedShort();
+        }
+
+        public CONSTANT_String_info(ConstantPool cp, int string_index) {
+            super(cp);
+            this.string_index = string_index;
+        }
+
+        public int getTag() {
+            return CONSTANT_String;
+        }
+
+        public String getString() throws ConstantPoolException {
+            return cp.getUTF8Value(string_index);
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitString(this, data);
+        }
+
+        public final int string_index;
+    }
+
+    public static class CONSTANT_Utf8_info extends CPInfo {
+        CONSTANT_Utf8_info(ClassReader cr) throws IOException {
+            value = cr.readUTF();
+        }
+
+        public CONSTANT_Utf8_info(String value) {
+            this.value = value;
+        }
+
+        public int getTag() {
+            return CONSTANT_Utf8;
+        }
+
+        @Override
+        public String toString() {
+            return "CONSTANT_Utf8_info[value: " + value + "]";
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visitUtf8(this, data);
+        }
+
+        public final String value;
+    }
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ConstantPoolException.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,41 @@
+/*
+ * 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.tools.classfile;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ConstantPoolException extends Exception {
+    ConstantPoolException(int index) {
+        this.index = index;
+    }
+
+    public final int index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ConstantValue_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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.  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.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.2.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ConstantValue_attribute extends Attribute {
+    ConstantValue_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        constantvalue_index = cr.readUnsignedShort();
+    }
+
+    public ConstantValue_attribute(ConstantPool constant_pool, int constantvalue_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.ConstantValue), constantvalue_index);
+    }
+
+    public ConstantValue_attribute(int name_index, int constantvalue_index) {
+        super(name_index, 2);
+        this.constantvalue_index = constantvalue_index;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitConstantValue(this, data);
+    }
+
+    public final int constantvalue_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/DefaultAttribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,50 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class DefaultAttribute extends Attribute {
+    DefaultAttribute(ClassReader cr, int name_index, byte[] data) {
+        super(name_index, data.length);
+        info = data;
+    }
+
+    public DefaultAttribute(ConstantPool constant_pool, int name_index, byte[] info) {
+        super(name_index, info.length);
+        this.info = info;
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitDefault(this, p);
+    }
+
+    public final byte[] info;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Deprecated_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,55 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.15.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Deprecated_attribute extends Attribute {
+    Deprecated_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+    }
+
+    public Deprecated_attribute(ConstantPool constant_pool)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.Deprecated));
+    }
+
+    public Deprecated_attribute(int name_index) {
+        super(name_index, 0);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitDeprecated(this, data);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Descriptor.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,198 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.4.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Descriptor {
+    public class InvalidDescriptor extends DescriptorException {
+        InvalidDescriptor(String desc) {
+            this.desc = desc;
+            this.index = -1;
+        }
+
+        InvalidDescriptor(String desc, int index) {
+            this.desc = desc;
+            this.index = index;
+        }
+
+        @Override
+        public String getMessage() {
+            // i18n
+            if (index == -1)
+                return "invalid descriptor \"" + desc + "\"";
+            else
+                return "descriptor is invalid at offset " + index + " in \"" + desc + "\"";
+        }
+
+        public final String desc;
+        public final int index;
+
+    }
+
+    public Descriptor(ClassReader cr) throws IOException {
+        this(cr.readUnsignedShort());
+    }
+
+    public Descriptor(int index) {
+        this.index = index;
+
+    }
+
+    public String getValue(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(index);
+    }
+
+    public int getParameterCount(ConstantPool constant_pool)
+            throws ConstantPoolException, InvalidDescriptor {
+        String desc = getValue(constant_pool);
+        int end = desc.indexOf(")");
+        if (end == -1)
+            throw new InvalidDescriptor(desc);
+        parse(desc, 0, end + 1);
+        return count;
+
+    }
+
+    public String getParameterTypes(ConstantPool constant_pool)
+            throws ConstantPoolException, InvalidDescriptor {
+        String desc = getValue(constant_pool);
+        int end = desc.indexOf(")");
+        if (end == -1)
+            throw new InvalidDescriptor(desc);
+        return parse(desc, 0, end + 1);
+    }
+
+    public String getReturnType(ConstantPool constant_pool)
+            throws ConstantPoolException, InvalidDescriptor {
+        String desc = getValue(constant_pool);
+        int end = desc.indexOf(")");
+        if (end == -1)
+            throw new InvalidDescriptor(desc);
+        return parse(desc, end + 1, desc.length());
+    }
+
+    public String getFieldType(ConstantPool constant_pool)
+            throws ConstantPoolException, InvalidDescriptor {
+        String desc = getValue(constant_pool);
+        return parse(desc, 0, desc.length());
+    }
+
+    private String parse(String desc, int start, int end)
+            throws InvalidDescriptor {
+        int p = start;
+        StringBuffer sb = new StringBuffer();
+        int dims = 0;
+        count = 0;
+
+        while (p < end) {
+            String type;
+            char ch;
+            switch (ch = desc.charAt(p++)) {
+                case '(':
+                    sb.append('(');
+                    continue;
+
+                case ')':
+                    sb.append(')');
+                    continue;
+
+                case '[':
+                    dims++;
+                    continue;
+
+                case 'B':
+                    type = "byte";
+                    break;
+
+                case 'C':
+                    type = "char";
+                    break;
+
+                case 'D':
+                    type = "double";
+                    break;
+
+                case 'F':
+                    type = "float";
+                    break;
+
+                case 'I':
+                    type = "int";
+                    break;
+
+                case 'J':
+                    type = "long";
+                    break;
+
+                case 'L':
+                    int sep = desc.indexOf(';', p);
+                    if (sep == -1)
+                        throw new InvalidDescriptor(desc, p - 1);
+                    type = desc.substring(p, sep).replace('/', '.');
+                    p = sep + 1;
+                    break;
+
+                case 'S':
+                    type = "short";
+                    break;
+
+                case 'Z':
+                    type = "boolean";
+                    break;
+
+                case 'V':
+                    type = "void";
+                    break;
+
+                default:
+                    throw new InvalidDescriptor(desc, p - 1);
+            }
+
+            if (sb.length() > 1 && sb.charAt(0) == '(')
+                sb.append(", ");
+            sb.append(type);
+            for ( ; dims > 0; dims-- )
+                sb.append("[]");
+
+            count++;
+        }
+
+        return sb.toString();
+    }
+
+    public final int index;
+    private int count;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/DescriptorException.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,36 @@
+/*
+ * 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.tools.classfile;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class DescriptorException extends Exception {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/EnclosingMethod_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,73 @@
+
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.7.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class EnclosingMethod_attribute extends Attribute {
+    EnclosingMethod_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        class_index = cr.readUnsignedShort();
+        method_index = cr.readUnsignedShort();
+    }
+
+    public EnclosingMethod_attribute(ConstantPool constant_pool, int class_index, int method_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.EnclosingMethod), class_index, method_index);
+    }
+
+    public EnclosingMethod_attribute(int name_index, int class_index, int method_index) {
+        super(name_index, 4);
+        this.class_index = class_index;
+        this.method_index = method_index;
+    }
+
+    public String getClassName(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getClassInfo(class_index).getName();
+    }
+
+    public String getMethodName(ConstantPool constant_pool) throws ConstantPoolException {
+        if (method_index == 0)
+            return "";
+        return constant_pool.getNameAndTypeInfo(method_index).getName();
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitEnclosingMethod(this, data);
+    }
+
+    public final int class_index;
+    public final int method_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Exceptions_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,69 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.5.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Exceptions_attribute extends Attribute {
+    Exceptions_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        number_of_exceptions = cr.readUnsignedShort();
+        exception_index_table = new int[number_of_exceptions];
+        for (int i = 0; i < number_of_exceptions; i++)
+            exception_index_table[i] = cr.readUnsignedShort();
+    }
+
+    public Exceptions_attribute(ConstantPool constant_pool, int[] exception_index_table)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.Exceptions), exception_index_table);
+    }
+
+    public Exceptions_attribute(int name_index, int[] exception_index_table) {
+        super(name_index, 2 + 2 * exception_index_table.length);
+        this.number_of_exceptions = exception_index_table.length;
+        this.exception_index_table = exception_index_table;
+    }
+
+    public String getException(int index, ConstantPool constant_pool) throws ConstantPoolException {
+        int exception_index = exception_index_table[index];
+        return constant_pool.getClassInfo(exception_index).getName();
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitExceptions(this, data);
+    }
+
+    public final int number_of_exceptions;
+    public final int[] exception_index_table;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Field.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Field {
+    Field(ClassReader cr) throws IOException {
+        access_flags = new AccessFlags(cr);
+        name_index = cr.readUnsignedShort();
+        descriptor = new Descriptor(cr);
+        attributes = new Attributes(cr);
+    }
+
+    public Field(AccessFlags access_flags,
+            int name_index, Descriptor descriptor,
+            Attributes attributes) {
+        this.access_flags = access_flags;
+        this.name_index = name_index;
+        this.descriptor = descriptor;
+        this.attributes = attributes;
+    }
+
+    public String getName(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(name_index);
+    }
+
+    public final AccessFlags access_flags;
+    public final int name_index;
+    public final Descriptor descriptor;
+    public final Attributes attributes;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/InnerClasses_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,102 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+import com.sun.tools.classfile.ConstantPool.*;
+
+/**
+ * See JVMS3, section 4.8.6.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class InnerClasses_attribute extends Attribute {
+    InnerClasses_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        number_of_classes = cr.readUnsignedShort();
+        classes = new Info[number_of_classes];
+        for (int i = 0; i < number_of_classes; i++)
+            classes[i] = new Info(cr);
+    }
+
+    public InnerClasses_attribute(ConstantPool constant_pool, Info[] classes)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.InnerClasses), classes);
+    }
+
+    public InnerClasses_attribute(int name_index, Info[] classes) {
+        super(name_index, 2 + Info.length() * classes.length);
+        this.number_of_classes = classes.length;
+        this.classes = classes;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitInnerClasses(this, data);
+    }
+
+    public final int number_of_classes;
+    public final Info[] classes;
+
+    public static class Info {
+        Info(ClassReader cr) throws IOException {
+            inner_class_info_index = cr.readUnsignedShort();
+            outer_class_info_index = cr.readUnsignedShort();
+            inner_name_index = cr.readUnsignedShort();
+            inner_class_access_flags = new AccessFlags(cr.readUnsignedShort());
+        }
+
+        public CONSTANT_Class_info getInnerClassInfo(ConstantPool constant_pool) throws ConstantPoolException {
+            if (inner_class_info_index == 0)
+                return null;
+            return constant_pool.getClassInfo(inner_class_info_index);
+        }
+
+        public CONSTANT_Class_info getOuterClassInfo(ConstantPool constant_pool) throws ConstantPoolException {
+            if (outer_class_info_index == 0)
+                return null;
+            return constant_pool.getClassInfo(outer_class_info_index);
+        }
+
+        public String getInnerName(ConstantPool constant_pool) throws ConstantPoolException {
+            if (inner_name_index == 0)
+                return null;
+            return constant_pool.getUTF8Value(inner_name_index);
+        }
+
+        public static int length() {
+            return 8;
+        }
+
+        public final int inner_class_info_index;
+        public final int outer_class_info_index;
+        public final int inner_name_index;
+        public final AccessFlags inner_class_access_flags;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/LineNumberTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,78 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.12.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class LineNumberTable_attribute extends Attribute {
+    LineNumberTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        line_number_table_length = cr.readUnsignedShort();
+        line_number_table = new Entry[line_number_table_length];
+        for (int i = 0; i < line_number_table_length; i++)
+            line_number_table[i] = new Entry(cr);
+    }
+
+    public LineNumberTable_attribute(ConstantPool constant_pool, Entry[] line_number_table)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.LineNumberTable), line_number_table);
+    }
+
+    public LineNumberTable_attribute(int name_index, Entry[] line_number_table) {
+        super(name_index, line_number_table.length * Entry.length());
+        this.line_number_table_length = line_number_table.length;
+        this.line_number_table = line_number_table;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitLineNumberTable(this, data);
+    }
+
+    public final int line_number_table_length;
+    public final Entry[] line_number_table;
+
+    public static class Entry {
+        Entry(ClassReader cr) throws IOException {
+            start_pc = cr.readUnsignedShort();
+            line_number = cr.readUnsignedShort();
+        }
+
+        public static int length() {
+            return 4;
+        }
+
+        public final int start_pc;
+        public final int line_number;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/LocalVariableTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,84 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.13.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class LocalVariableTable_attribute extends Attribute {
+    LocalVariableTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        local_variable_table_length = cr.readUnsignedShort();
+        local_variable_table = new Entry[local_variable_table_length];
+        for (int i = 0; i < local_variable_table_length; i++)
+            local_variable_table[i] = new Entry(cr);
+    }
+
+    public LocalVariableTable_attribute(ConstantPool constant_pool, Entry[] local_variable_table)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.LocalVariableTable), local_variable_table);
+    }
+
+    public LocalVariableTable_attribute(int name_index, Entry[] local_variable_table) {
+        super(name_index, local_variable_table.length * Entry.length());
+        this.local_variable_table_length = local_variable_table.length;
+        this.local_variable_table = local_variable_table;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitLocalVariableTable(this, data);
+    }
+
+    public final int local_variable_table_length;
+    public final Entry[] local_variable_table;
+
+    public static class Entry {
+        Entry(ClassReader cr) throws IOException {
+            start_pc = cr.readUnsignedShort();
+            length = cr.readUnsignedShort();
+            name_index = cr.readUnsignedShort();
+            descriptor_index = cr.readUnsignedShort();
+            index = cr.readUnsignedShort();
+        }
+
+        public static int length() {
+            return 10;
+        }
+
+        public final int start_pc;
+        public final int length;
+        public final int name_index;
+        public final int descriptor_index;
+        public final int index;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/LocalVariableTypeTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,84 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.14.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class LocalVariableTypeTable_attribute extends Attribute {
+    LocalVariableTypeTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        local_variable_table_length = cr.readUnsignedShort();
+        local_variable_table = new Entry[local_variable_table_length];
+        for (int i = 0; i < local_variable_table_length; i++)
+            local_variable_table[i] = new Entry(cr);
+    }
+
+    public LocalVariableTypeTable_attribute(ConstantPool constant_pool, Entry[] local_variable_table)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.LocalVariableTypeTable), local_variable_table);
+    }
+
+    public LocalVariableTypeTable_attribute(int name_index, Entry[] local_variable_table) {
+        super(name_index, local_variable_table.length * Entry.length());
+        this.local_variable_table_length = local_variable_table.length;
+        this.local_variable_table = local_variable_table;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitLocalVariableTypeTable(this, data);
+    }
+
+    public final int local_variable_table_length;
+    public final Entry[] local_variable_table;
+
+    public static class Entry {
+        Entry(ClassReader cr) throws IOException {
+            start_pc = cr.readUnsignedShort();
+            length = cr.readUnsignedShort();
+            name_index = cr.readUnsignedShort();
+            signature_index = cr.readUnsignedShort();
+            index = cr.readUnsignedShort();
+        }
+
+        public static int length() {
+            return 10;
+        }
+
+        public final int start_pc;
+        public final int length;
+        public final int name_index;
+        public final int signature_index;
+        public final int index;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Method.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Method {
+    Method(ClassReader cr) throws IOException {
+        access_flags = new AccessFlags(cr);
+        name_index = cr.readUnsignedShort();
+        descriptor = new Descriptor(cr);
+        attributes = new Attributes(cr);
+    }
+
+    public Method(AccessFlags access_flags,
+            int name_index, Descriptor descriptor,
+            Attributes attributes) {
+        this.access_flags = access_flags;
+        this.name_index = name_index;
+        this.descriptor = descriptor;
+        this.attributes = attributes;
+    }
+
+    public String getName(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(name_index);
+    }
+
+    public final AccessFlags access_flags;
+    public final int name_index;
+    public final Descriptor descriptor;
+    public final Attributes attributes;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ModuleExportTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JSR 277.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ModuleExportTable_attribute extends Attribute {
+    ModuleExportTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        int export_type_length = cr.readUnsignedShort();
+        export_type_table = new int[export_type_length];
+        for (int i = 0; i < export_type_table.length; i++)
+            export_type_table[i] = cr.readUnsignedShort();
+    }
+
+    public ModuleExportTable_attribute(ConstantPool cp, int[] export_type_table)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.ModuleExportTable), export_type_table);
+    }
+
+    public ModuleExportTable_attribute(int name_index, int[] export_type_table) {
+        super(name_index, 2 * export_type_table.length);
+        this.export_type_table = export_type_table;
+    }
+
+    public int getExportTypeCount() {
+        return export_type_table.length;
+    }
+
+    public String getExportTypeName(int index, ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(export_type_table[index]);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitModuleExportTable(this, p);
+    }
+
+    public final int[] export_type_table;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/ModuleMemberTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,69 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JSR 277.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ModuleMemberTable_attribute extends Attribute {
+    ModuleMemberTable_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        int package_member_length = cr.readUnsignedShort();
+        package_member_table = new int[package_member_length];
+        for (int i = 0; i < package_member_table.length; i++)
+            package_member_table[i] = cr.readUnsignedShort();
+    }
+
+    public ModuleMemberTable_attribute(ConstantPool cp, int[] package_member_table)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.ModuleMemberTable), package_member_table);
+    }
+
+    public ModuleMemberTable_attribute(int name_index, int[] package_member_table) {
+        super(name_index, 2 * package_member_table.length);
+        this.package_member_table = package_member_table;
+    }
+
+    public int getPackageMemberCount() {
+        return package_member_table.length;
+    }
+
+    public String getPackageMemberName(int index, ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(package_member_table[index]);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitModuleMemberTable(this, p);
+    }
+
+    public final int[] package_member_table;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Module_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,64 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JSR 277.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Module_attribute extends Attribute {
+    Module_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        module_name = cr.readUnsignedShort();
+    }
+
+    public Module_attribute(ConstantPool constant_pool, int module_name)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.Module), module_name);
+    }
+
+    public Module_attribute(int name_index, int module_name) {
+        super(name_index, 2);
+        this.module_name = module_name;
+    }
+
+    public String getModuleName(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(module_name);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitModule(this, data);
+    }
+
+    public final int module_name;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/OpCodes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,868 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.util.HashMap;
+
+/**
+ * See JVMS3, section 6.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class OpCodes {
+
+    public static int opcLength(int opc) throws IllegalArgumentException {
+        switch (opc >> 8) {
+            case 0:
+                return opcLengthsTab[opc];
+            case opc_wide:
+                switch (opc & 0xFF) {
+                    case opc_aload:
+                    case opc_astore:
+                    case opc_fload:
+                    case opc_fstore:
+                    case opc_iload:
+                    case opc_istore:
+                    case opc_lload:
+                    case opc_lstore:
+                    case opc_dload:
+                    case opc_dstore:
+                    case opc_ret:
+                        return 4;
+                    case opc_iinc:
+                        return 6;
+                    default:
+                        throw new IllegalArgumentException();
+                }
+            case opc_nonpriv:
+            case opc_priv:
+                return 2;
+            default:
+                throw new IllegalArgumentException();
+        }
+    }
+
+    public static String opcName(int opc) {
+        try {
+            switch (opc >> 8) {
+                case 0:
+                    return opcNamesTab[opc];
+                case opc_wide:
+                    {
+                        String mnem = opcNamesTab[opc & 0xFF] + "_w";
+                        if (mnemocodes.get(mnem) == null) {
+                            return null; // non-existent opcode
+                        }
+                        return mnem;
+                    }
+                case opc_nonpriv:
+                    return opcExtNamesTab[opc & 0xFF];
+                case opc_priv:
+                    return opcPrivExtNamesTab[opc & 0xFF];
+                default:
+                    return null;
+            }
+        } catch (ArrayIndexOutOfBoundsException e) {
+            switch (opc) {
+                case opc_nonpriv:
+                    return "nonpriv";
+                case opc_priv:
+                    return "priv";
+                default:
+                    return null;
+            }
+        }
+    }
+
+    /* Opcodes */
+    public static final int opc_dead                     = -2;
+    public static final int opc_label                    = -1;
+    public static final int opc_nop                      = 0;
+    public static final int opc_aconst_null              = 1;
+    public static final int opc_iconst_m1                = 2;
+    public static final int opc_iconst_0                 = 3;
+    public static final int opc_iconst_1                 = 4;
+    public static final int opc_iconst_2                 = 5;
+    public static final int opc_iconst_3                 = 6;
+    public static final int opc_iconst_4                 = 7;
+    public static final int opc_iconst_5                 = 8;
+    public static final int opc_lconst_0                 = 9;
+    public static final int opc_lconst_1                 = 10;
+    public static final int opc_fconst_0                 = 11;
+    public static final int opc_fconst_1                 = 12;
+    public static final int opc_fconst_2                 = 13;
+    public static final int opc_dconst_0                 = 14;
+    public static final int opc_dconst_1                 = 15;
+    public static final int opc_bipush                   = 16;
+    public static final int opc_sipush                   = 17;
+    public static final int opc_ldc                      = 18;
+    public static final int opc_ldc_w                    = 19;
+    public static final int opc_ldc2_w                   = 20;
+    public static final int opc_iload                    = 21;
+    public static final int opc_lload                    = 22;
+    public static final int opc_fload                    = 23;
+    public static final int opc_dload                    = 24;
+    public static final int opc_aload                    = 25;
+    public static final int opc_iload_0                  = 26;
+    public static final int opc_iload_1                  = 27;
+    public static final int opc_iload_2                  = 28;
+    public static final int opc_iload_3                  = 29;
+    public static final int opc_lload_0                  = 30;
+    public static final int opc_lload_1                  = 31;
+    public static final int opc_lload_2                  = 32;
+    public static final int opc_lload_3                  = 33;
+    public static final int opc_fload_0                  = 34;
+    public static final int opc_fload_1                  = 35;
+    public static final int opc_fload_2                  = 36;
+    public static final int opc_fload_3                  = 37;
+    public static final int opc_dload_0                  = 38;
+    public static final int opc_dload_1                  = 39;
+    public static final int opc_dload_2                  = 40;
+    public static final int opc_dload_3                  = 41;
+    public static final int opc_aload_0                  = 42;
+    public static final int opc_aload_1                  = 43;
+    public static final int opc_aload_2                  = 44;
+    public static final int opc_aload_3                  = 45;
+    public static final int opc_iaload                   = 46;
+    public static final int opc_laload                   = 47;
+    public static final int opc_faload                   = 48;
+    public static final int opc_daload                   = 49;
+    public static final int opc_aaload                   = 50;
+    public static final int opc_baload                   = 51;
+    public static final int opc_caload                   = 52;
+    public static final int opc_saload                   = 53;
+    public static final int opc_istore                   = 54;
+    public static final int opc_lstore                   = 55;
+    public static final int opc_fstore                   = 56;
+    public static final int opc_dstore                   = 57;
+    public static final int opc_astore                   = 58;
+    public static final int opc_istore_0                 = 59;
+    public static final int opc_istore_1                 = 60;
+    public static final int opc_istore_2                 = 61;
+    public static final int opc_istore_3                 = 62;
+    public static final int opc_lstore_0                 = 63;
+    public static final int opc_lstore_1                 = 64;
+    public static final int opc_lstore_2                 = 65;
+    public static final int opc_lstore_3                 = 66;
+    public static final int opc_fstore_0                 = 67;
+    public static final int opc_fstore_1                 = 68;
+    public static final int opc_fstore_2                 = 69;
+    public static final int opc_fstore_3                 = 70;
+    public static final int opc_dstore_0                 = 71;
+    public static final int opc_dstore_1                 = 72;
+    public static final int opc_dstore_2                 = 73;
+    public static final int opc_dstore_3                 = 74;
+    public static final int opc_astore_0                 = 75;
+    public static final int opc_astore_1                 = 76;
+    public static final int opc_astore_2                 = 77;
+    public static final int opc_astore_3                 = 78;
+    public static final int opc_iastore                  = 79;
+    public static final int opc_lastore                  = 80;
+    public static final int opc_fastore                  = 81;
+    public static final int opc_dastore                  = 82;
+    public static final int opc_aastore                  = 83;
+    public static final int opc_bastore                  = 84;
+    public static final int opc_castore                  = 85;
+    public static final int opc_sastore                  = 86;
+    public static final int opc_pop                      = 87;
+    public static final int opc_pop2                     = 88;
+    public static final int opc_dup                      = 89;
+    public static final int opc_dup_x1                   = 90;
+    public static final int opc_dup_x2                   = 91;
+    public static final int opc_dup2                     = 92;
+    public static final int opc_dup2_x1                  = 93;
+    public static final int opc_dup2_x2                  = 94;
+    public static final int opc_swap                     = 95;
+    public static final int opc_iadd                     = 96;
+    public static final int opc_ladd                     = 97;
+    public static final int opc_fadd                     = 98;
+    public static final int opc_dadd                     = 99;
+    public static final int opc_isub                     = 100;
+    public static final int opc_lsub                     = 101;
+    public static final int opc_fsub                     = 102;
+    public static final int opc_dsub                     = 103;
+    public static final int opc_imul                     = 104;
+    public static final int opc_lmul                     = 105;
+    public static final int opc_fmul                     = 106;
+    public static final int opc_dmul                     = 107;
+    public static final int opc_idiv                     = 108;
+    public static final int opc_ldiv                     = 109;
+    public static final int opc_fdiv                     = 110;
+    public static final int opc_ddiv                     = 111;
+    public static final int opc_irem                     = 112;
+    public static final int opc_lrem                     = 113;
+    public static final int opc_frem                     = 114;
+    public static final int opc_drem                     = 115;
+    public static final int opc_ineg                     = 116;
+    public static final int opc_lneg                     = 117;
+    public static final int opc_fneg                     = 118;
+    public static final int opc_dneg                     = 119;
+    public static final int opc_ishl                     = 120;
+    public static final int opc_lshl                     = 121;
+    public static final int opc_ishr                     = 122;
+    public static final int opc_lshr                     = 123;
+    public static final int opc_iushr                    = 124;
+    public static final int opc_lushr                    = 125;
+    public static final int opc_iand                     = 126;
+    public static final int opc_land                     = 127;
+    public static final int opc_ior                      = 128;
+    public static final int opc_lor                      = 129;
+    public static final int opc_ixor                     = 130;
+    public static final int opc_lxor                     = 131;
+    public static final int opc_iinc                     = 132;
+    public static final int opc_i2l                      = 133;
+    public static final int opc_i2f                      = 134;
+    public static final int opc_i2d                      = 135;
+    public static final int opc_l2i                      = 136;
+    public static final int opc_l2f                      = 137;
+    public static final int opc_l2d                      = 138;
+    public static final int opc_f2i                      = 139;
+    public static final int opc_f2l                      = 140;
+    public static final int opc_f2d                      = 141;
+    public static final int opc_d2i                      = 142;
+    public static final int opc_d2l                      = 143;
+    public static final int opc_d2f                      = 144;
+    public static final int opc_i2b                      = 145;
+    public static final int opc_int2byte                 = 145;
+    public static final int opc_i2c                      = 146;
+    public static final int opc_int2char                 = 146;
+    public static final int opc_i2s                      = 147;
+    public static final int opc_int2short                = 147;
+    public static final int opc_lcmp                     = 148;
+    public static final int opc_fcmpl                    = 149;
+    public static final int opc_fcmpg                    = 150;
+    public static final int opc_dcmpl                    = 151;
+    public static final int opc_dcmpg                    = 152;
+    public static final int opc_ifeq                     = 153;
+    public static final int opc_ifne                     = 154;
+    public static final int opc_iflt                     = 155;
+    public static final int opc_ifge                     = 156;
+    public static final int opc_ifgt                     = 157;
+    public static final int opc_ifle                     = 158;
+    public static final int opc_if_icmpeq                = 159;
+    public static final int opc_if_icmpne                = 160;
+    public static final int opc_if_icmplt                = 161;
+    public static final int opc_if_icmpge                = 162;
+    public static final int opc_if_icmpgt                = 163;
+    public static final int opc_if_icmple                = 164;
+    public static final int opc_if_acmpeq                = 165;
+    public static final int opc_if_acmpne                = 166;
+    public static final int opc_goto                     = 167;
+    public static final int opc_jsr                      = 168;
+    public static final int opc_ret                      = 169;
+    public static final int opc_tableswitch              = 170;
+    public static final int opc_lookupswitch             = 171;
+    public static final int opc_ireturn                  = 172;
+    public static final int opc_lreturn                  = 173;
+    public static final int opc_freturn                  = 174;
+    public static final int opc_dreturn                  = 175;
+    public static final int opc_areturn                  = 176;
+    public static final int opc_return                   = 177;
+    public static final int opc_getstatic                = 178;
+    public static final int opc_putstatic                = 179;
+    public static final int opc_getfield                 = 180;
+    public static final int opc_putfield                 = 181;
+    public static final int opc_invokevirtual            = 182;
+    public static final int opc_invokenonvirtual         = 183;
+    public static final int opc_invokespecial            = 183;
+    public static final int opc_invokestatic             = 184;
+    public static final int opc_invokeinterface          = 185;
+//  public static final int opc_xxxunusedxxx             = 186;
+    public static final int opc_new                      = 187;
+    public static final int opc_newarray                 = 188;
+    public static final int opc_anewarray                = 189;
+    public static final int opc_arraylength              = 190;
+    public static final int opc_athrow                   = 191;
+    public static final int opc_checkcast                = 192;
+    public static final int opc_instanceof               = 193;
+    public static final int opc_monitorenter             = 194;
+    public static final int opc_monitorexit              = 195;
+    public static final int opc_wide                     = 196;
+    public static final int opc_multianewarray           = 197;
+    public static final int opc_ifnull                   = 198;
+    public static final int opc_ifnonnull                = 199;
+    public static final int opc_goto_w                   = 200;
+    public static final int opc_jsr_w                    = 201;
+
+    /* Pseudo-instructions */
+    public static final int opc_bytecode                 = 203;
+    public static final int opc_try                      = 204;
+    public static final int opc_endtry                   = 205;
+    public static final int opc_catch                    = 206;
+    public static final int opc_var                      = 207;
+    public static final int opc_endvar                   = 208;
+    public static final int opc_localsmap                = 209;
+    public static final int opc_stackmap                 = 210;
+
+    /* PicoJava prefixes */
+    public static final int opc_nonpriv                  = 254;
+    public static final int opc_priv                     = 255;
+
+    /* Wide instructions */
+    public static final int opc_iload_w         = (opc_wide << 8 ) | opc_iload;
+    public static final int opc_lload_w         = (opc_wide << 8 ) | opc_lload;
+    public static final int opc_fload_w         = (opc_wide << 8 ) | opc_fload;
+    public static final int opc_dload_w         = (opc_wide << 8 ) | opc_dload;
+    public static final int opc_aload_w         = (opc_wide << 8 ) | opc_aload;
+    public static final int opc_istore_w        = (opc_wide << 8 ) | opc_istore;
+    public static final int opc_lstore_w        = (opc_wide << 8 ) | opc_lstore;
+    public static final int opc_fstore_w        = (opc_wide << 8 ) | opc_fstore;
+    public static final int opc_dstore_w        = (opc_wide << 8 ) | opc_dstore;
+    public static final int opc_astore_w        = (opc_wide << 8 ) | opc_astore;
+    public static final int opc_ret_w           = (opc_wide << 8 ) | opc_ret;
+    public static final int opc_iinc_w          = (opc_wide << 8 ) | opc_iinc;
+
+    /* Opcode Names */
+    private static final String opcNamesTab[] = {
+        "nop",
+        "aconst_null",
+        "iconst_m1",
+        "iconst_0",
+        "iconst_1",
+        "iconst_2",
+        "iconst_3",
+        "iconst_4",
+        "iconst_5",
+        "lconst_0",
+        "lconst_1",
+        "fconst_0",
+        "fconst_1",
+        "fconst_2",
+        "dconst_0",
+        "dconst_1",
+        "bipush",
+        "sipush",
+        "ldc",
+        "ldc_w",
+        "ldc2_w",
+        "iload",
+        "lload",
+        "fload",
+        "dload",
+        "aload",
+        "iload_0",
+        "iload_1",
+        "iload_2",
+        "iload_3",
+        "lload_0",
+        "lload_1",
+        "lload_2",
+        "lload_3",
+        "fload_0",
+        "fload_1",
+        "fload_2",
+        "fload_3",
+        "dload_0",
+        "dload_1",
+        "dload_2",
+        "dload_3",
+        "aload_0",
+        "aload_1",
+        "aload_2",
+        "aload_3",
+        "iaload",
+        "laload",
+        "faload",
+        "daload",
+        "aaload",
+        "baload",
+        "caload",
+        "saload",
+        "istore",
+        "lstore",
+        "fstore",
+        "dstore",
+        "astore",
+        "istore_0",
+        "istore_1",
+        "istore_2",
+        "istore_3",
+        "lstore_0",
+        "lstore_1",
+        "lstore_2",
+        "lstore_3",
+        "fstore_0",
+        "fstore_1",
+        "fstore_2",
+        "fstore_3",
+        "dstore_0",
+        "dstore_1",
+        "dstore_2",
+        "dstore_3",
+        "astore_0",
+        "astore_1",
+        "astore_2",
+        "astore_3",
+        "iastore",
+        "lastore",
+        "fastore",
+        "dastore",
+        "aastore",
+        "bastore",
+        "castore",
+        "sastore",
+        "pop",
+        "pop2",
+        "dup",
+        "dup_x1",
+        "dup_x2",
+        "dup2",
+        "dup2_x1",
+        "dup2_x2",
+        "swap",
+        "iadd",
+        "ladd",
+        "fadd",
+        "dadd",
+        "isub",
+        "lsub",
+        "fsub",
+        "dsub",
+        "imul",
+        "lmul",
+        "fmul",
+        "dmul",
+        "idiv",
+        "ldiv",
+        "fdiv",
+        "ddiv",
+        "irem",
+        "lrem",
+        "frem",
+        "drem",
+        "ineg",
+        "lneg",
+        "fneg",
+        "dneg",
+        "ishl",
+        "lshl",
+        "ishr",
+        "lshr",
+        "iushr",
+        "lushr",
+        "iand",
+        "land",
+        "ior",
+        "lor",
+        "ixor",
+        "lxor",
+        "iinc",
+        "i2l",
+        "i2f",
+        "i2d",
+        "l2i",
+        "l2f",
+        "l2d",
+        "f2i",
+        "f2l",
+        "f2d",
+        "d2i",
+        "d2l",
+        "d2f",
+        "i2b",
+        "i2c",
+        "i2s",
+        "lcmp",
+        "fcmpl",
+        "fcmpg",
+        "dcmpl",
+        "dcmpg",
+        "ifeq",
+        "ifne",
+        "iflt",
+        "ifge",
+        "ifgt",
+        "ifle",
+        "if_icmpeq",
+        "if_icmpne",
+        "if_icmplt",
+        "if_icmpge",
+        "if_icmpgt",
+        "if_icmple",
+        "if_acmpeq",
+        "if_acmpne",
+        "goto",
+        "jsr",
+        "ret",
+        "tableswitch",
+        "lookupswitch",
+        "ireturn",
+        "lreturn",
+        "freturn",
+        "dreturn",
+        "areturn",
+        "return",
+        "getstatic",
+        "putstatic",
+        "getfield",
+        "putfield",
+        "invokevirtual",
+        "invokespecial",        //      was "invokenonvirtual",
+        "invokestatic",
+        "invokeinterface",
+        "bytecode 186",         //"xxxunusedxxx",
+        "new",
+        "newarray",
+        "anewarray",
+        "arraylength",
+        "athrow",
+        "checkcast",
+        "instanceof",
+        "monitorenter",
+        "monitorexit",
+         null, // "wide",
+        "multianewarray",
+        "ifnull",
+        "ifnonnull",
+        "goto_w",
+        "jsr_w",
+        "bytecode 202",         // "breakpoint",
+        "bytecode",
+        "try",
+        "endtry",
+        "catch",
+        "var",
+        "endvar",
+        "locals_map",
+        "stack_map"
+    };
+
+    /* Opcode Lengths */
+    private static final int opcLengthsTab[] = {
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        2,
+        3,
+        2,
+        3,
+        3,
+        2,
+        2,
+        2,
+        2,
+        2,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        2,
+        2,
+        2,
+        2,
+        2,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        3,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        2,
+        99,
+        99,
+        1,
+        1,
+        1,
+        1,
+        1,
+        1,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        3,
+        5,
+        0,
+        3,
+        2,
+        3,
+        1,
+        1,
+        3,
+        3,
+        1,
+        1,
+        0, // wide
+        4,
+        3,
+        3,
+        5,
+        5,
+        1,
+        1, 0, 0, 0, 0, 0 // pseudo
+    };
+
+    /* Type codes, used in newarray opcode */
+    public static final int T_CLASS                      = 0x00000002;
+    public static final int T_BOOLEAN                    = 0x00000004;
+    public static final int T_CHAR                       = 0x00000005;
+    public static final int T_FLOAT                      = 0x00000006;
+    public static final int T_DOUBLE                     = 0x00000007;
+    public static final int T_BYTE                       = 0x00000008;
+    public static final int T_SHORT                      = 0x00000009;
+    public static final int T_INT                        = 0x0000000a;
+    public static final int T_LONG                       = 0x0000000b;
+
+    private static HashMap<String,Integer> mnemocodes = new HashMap<String,Integer>(301, 0.5f);
+    private static String opcExtNamesTab[]=new String[128];
+    private static String opcPrivExtNamesTab[]=new String[128];
+
+    private static void defineNonPriv(int opc, String mnem) {
+        mnemocodes.put(opcExtNamesTab[opc] = mnem, opc_nonpriv * 256 + opc);
+    }
+
+    private static void definePriv(int opc, String mnem) {
+        mnemocodes.put(opcPrivExtNamesTab[opc] = "priv_" + mnem, opc_priv * 256 + opc);
+    }
+
+    private static void defineExt(int opc, String mnem) {
+        defineNonPriv(opc, mnem);
+        definePriv(opc, mnem);
+    }
+
+    static {
+        for (int i = 0; i < opc_wide; i++) {
+            mnemocodes.put(opcNamesTab[i], i);
+        }
+        for (int i = opc_wide + 1; i < opcNamesTab.length; i++) {
+            mnemocodes.put(opcNamesTab[i], i);
+        }
+        mnemocodes.put("invokenonvirtual", opc_invokespecial);
+
+        mnemocodes.put("iload_w", opc_iload_w);
+        mnemocodes.put("lload_w", opc_lload_w);
+        mnemocodes.put("fload_w", opc_fload_w);
+        mnemocodes.put("dload_w", opc_dload_w);
+        mnemocodes.put("aload_w", opc_aload_w);
+        mnemocodes.put("istore_w", opc_istore_w);
+        mnemocodes.put("lstore_w", opc_lstore_w);
+        mnemocodes.put("fstore_w", opc_fstore_w);
+        mnemocodes.put("dstore_w", opc_dstore_w);
+        mnemocodes.put("astore_w", opc_astore_w);
+        mnemocodes.put("ret_w", opc_ret_w);
+        mnemocodes.put("iinc_w", opc_iinc_w);
+
+        mnemocodes.put("nonpriv", opc_nonpriv);
+        mnemocodes.put("priv", opc_priv);
+
+        defineExt(0, "load_ubyte");
+        defineExt(1, "load_byte");
+        defineExt(2, "load_char");
+        defineExt(3, "load_short");
+        defineExt(4, "load_word");
+        defineExt(10, "load_char_oe");
+        defineExt(11, "load_short_oe");
+        defineExt(12, "load_word_oe");
+        defineExt(16, "ncload_ubyte");
+        defineExt(17, "ncload_byte");
+        defineExt(18, "ncload_char");
+        defineExt(19, "ncload_short");
+        defineExt(20, "ncload_word");
+        defineExt(26, "ncload_char_oe");
+        defineExt(27, "ncload_short_oe");
+        defineExt(28, "ncload_word_oe");
+        defineExt(30, "cache_flush");
+        defineExt(32, "store_byte");
+        defineExt(34, "store_short");
+        defineExt(36, "store_word");
+        defineExt(42, "store_short_oe");
+        defineExt(44, "store_word_oe");
+        defineExt(48, "ncstore_byte");
+        defineExt(50, "ncstore_short");
+        defineExt(52, "ncstore_word");
+        defineExt(58, "ncstore_short_oe");
+        defineExt(60, "ncstore_word_oe");
+        defineExt(62, "zero_line");
+        defineNonPriv(5, "ret_from_sub");
+        defineNonPriv(63, "enter_sync_method");
+        definePriv(5, "ret_from_trap");
+        definePriv(6, "read_dcache_tag");
+        definePriv(7, "read_dcache_data");
+        definePriv(14, "read_icache_tag");
+        definePriv(15, "read_icache_data");
+        definePriv(22, "powerdown");
+        definePriv(23, "read_scache_data");
+        definePriv(31, "cache_index_flush");
+        definePriv(38, "write_dcache_tag");
+        definePriv(39, "write_dcache_data");
+        definePriv(46, "write_icache_tag");
+        definePriv(47, "write_icache_data");
+        definePriv(54, "reset");
+        definePriv(55, "write_scache_data");
+        for (int i = 0; i < 32; i++) {
+            definePriv(i + 64, "read_reg_" + i);
+        }
+        for (int i = 0; i < 32; i++) {
+            definePriv(i + 96, "write_reg_" + i);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.16 and 4.8.17.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public abstract class RuntimeAnnotations_attribute extends Attribute {
+    protected RuntimeAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(name_index, length);
+        int num_annotations = cr.readUnsignedShort();
+        annotations = new Annotation[num_annotations];
+        for (int i = 0; i < annotations.length; i++)
+            annotations[i] = new Annotation(cr);
+    }
+
+    protected RuntimeAnnotations_attribute(int name_index, Annotation[] annotations) {
+        super(name_index, length(annotations));
+        this.annotations = annotations;
+    }
+
+    private static int length(Annotation[] annos) {
+        int n = 2;
+        for (Annotation anno: annos)
+            n += anno.length();
+        return n;
+    }
+
+    public final Annotation[] annotations;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeInvisibleAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,56 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.17.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class RuntimeInvisibleAnnotations_attribute extends RuntimeAnnotations_attribute {
+    RuntimeInvisibleAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, AttributeException {
+        super(cr, name_index, length);
+    }
+
+    public RuntimeInvisibleAnnotations_attribute(ConstantPool cp, Annotation[] annotations)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.RuntimeInvisibleAnnotations), annotations);
+    }
+
+    public RuntimeInvisibleAnnotations_attribute(int name_index, Annotation[] annotations) {
+        super(name_index, annotations);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitRuntimeInvisibleAnnotations(this, p);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeInvisibleParameterAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,56 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.18.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class RuntimeInvisibleParameterAnnotations_attribute extends RuntimeParameterAnnotations_attribute {
+    RuntimeInvisibleParameterAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(cr, name_index, length);
+    }
+
+    public RuntimeInvisibleParameterAnnotations_attribute(ConstantPool cp, Annotation[][] parameter_annotations)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.RuntimeInvisibleParameterAnnotations), parameter_annotations);
+    }
+
+    public RuntimeInvisibleParameterAnnotations_attribute(int name_index, Annotation[][] parameter_annotations) {
+        super(name_index, parameter_annotations);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitRuntimeInvisibleParameterAnnotations(this, p);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeParameterAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.18 and 4.8.19.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public abstract class RuntimeParameterAnnotations_attribute extends Attribute {
+    RuntimeParameterAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(name_index, length);
+        int num_parameters = cr.readUnsignedByte();
+        parameter_annotations = new Annotation[num_parameters][];
+        for (int p = 0; p < parameter_annotations.length; p++) {
+            int num_annotations = cr.readUnsignedShort();
+            Annotation[] annotations = new Annotation[num_annotations];
+            for (int i = 0; i < num_annotations; i++)
+                annotations[i] = new Annotation(cr);
+            parameter_annotations[p] = annotations;
+        }
+    }
+
+    protected RuntimeParameterAnnotations_attribute(int name_index, Annotation[][] parameter_annotations) {
+        super(name_index, length(parameter_annotations));
+        this.parameter_annotations = parameter_annotations;
+    }
+
+    private static int length(Annotation[][] anno_arrays) {
+        int n = 1;
+        for (Annotation[] anno_array: anno_arrays) {
+            n += 2;
+            for (Annotation anno: anno_array)
+                n += anno.length();
+        }
+        return n;
+    }
+
+    public final Annotation[][] parameter_annotations;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeVisibleAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,56 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.16.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class RuntimeVisibleAnnotations_attribute extends RuntimeAnnotations_attribute {
+    RuntimeVisibleAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(cr, name_index, length);
+    }
+
+    public RuntimeVisibleAnnotations_attribute(ConstantPool cp, Annotation[] annotations)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.RuntimeVisibleAnnotations), annotations);
+    }
+
+    public RuntimeVisibleAnnotations_attribute(int name_index, Annotation[] annotations) {
+        super(name_index, annotations);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitRuntimeVisibleAnnotations(this, p);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/RuntimeVisibleParameterAnnotations_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,56 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.18.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class RuntimeVisibleParameterAnnotations_attribute extends RuntimeParameterAnnotations_attribute {
+    RuntimeVisibleParameterAnnotations_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, Annotation.InvalidAnnotation {
+        super(cr, name_index, length);
+    }
+
+    public RuntimeVisibleParameterAnnotations_attribute(ConstantPool cp, Annotation[][] parameter_annotations)
+            throws ConstantPoolException {
+        this(cp.getUTF8Index(Attribute.RuntimeVisibleParameterAnnotations), parameter_annotations);
+    }
+
+    public RuntimeVisibleParameterAnnotations_attribute(int name_index, Annotation[][] parameter_annotations) {
+        super(name_index, parameter_annotations);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitRuntimeVisibleParameterAnnotations(this, p);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Signature.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,275 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * See JVMS3 4.4.4.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Signature extends Descriptor {
+
+    public Signature(int index) {
+        super(index);
+    }
+
+    public Type getType(ConstantPool constant_pool) throws ConstantPoolException {
+        if (type == null)
+            type = parse(getValue(constant_pool));
+        return type;
+    }
+
+    @Override
+    public int getParameterCount(ConstantPool constant_pool) throws ConstantPoolException {
+        Type.MethodType m = (Type.MethodType) getType(constant_pool);
+        return m.argTypes.size();
+    }
+
+    @Override
+    public String getParameterTypes(ConstantPool constant_pool) throws ConstantPoolException {
+        Type.MethodType m = (Type.MethodType) getType(constant_pool);
+        StringBuilder sb = new StringBuilder();
+        sb.append("(");
+        String sep = "";
+        for (Type argType: m.argTypes) {
+            sb.append(sep);
+            sb.append(argType);
+            sep = ", ";
+        }
+        sb.append(")");
+        return sb.toString();
+    }
+
+    @Override
+    public String getReturnType(ConstantPool constant_pool) throws ConstantPoolException {
+        Type.MethodType m = (Type.MethodType) getType(constant_pool);
+        return m.returnType.toString();
+    }
+
+    @Override
+    public String getFieldType(ConstantPool constant_pool) throws ConstantPoolException {
+        return getType(constant_pool).toString();
+    }
+
+    private Type parse(String sig) {
+        this.sig = sig;
+        sigp = 0;
+
+        List<Type> typeArgTypes = null;
+        if (sig.charAt(sigp) == '<')
+            typeArgTypes = parseTypeArgTypes();
+
+        if (sig.charAt(sigp) == '(') {
+            List<Type> argTypes = parseTypeSignatures(')');
+            Type returnType = parseTypeSignature();
+            List<Type> throwsTypes = null;
+            while (sigp < sig.length() && sig.charAt(sigp) == '^') {
+                sigp++;
+                if (throwsTypes == null)
+                    throwsTypes = new ArrayList<Type>();
+                throwsTypes.add(parseTypeSignature());
+            }
+            return new Type.MethodType(typeArgTypes, argTypes, returnType, throwsTypes);
+        } else {
+            Type t = parseTypeSignature();
+            if (typeArgTypes == null && sigp == sig.length())
+                return t;
+            Type superclass = t;
+            List<Type> superinterfaces = new ArrayList<Type>();
+            while (sigp < sig.length())
+                superinterfaces.add(parseTypeSignature());
+            return new Type.ClassSigType(typeArgTypes, superclass, superinterfaces);
+
+        }
+    }
+
+    private Type parseTypeSignature() {
+        switch (sig.charAt(sigp)) {
+            case 'B':
+                sigp++;
+                return new Type.SimpleType("byte");
+
+            case 'C':
+                sigp++;
+                return new Type.SimpleType("char");
+
+            case 'D':
+                sigp++;
+                return new Type.SimpleType("double");
+
+            case 'F':
+                sigp++;
+                return new Type.SimpleType("float");
+
+            case 'I':
+                sigp++;
+                return new Type.SimpleType("int");
+
+            case 'J':
+                sigp++;
+                return new Type.SimpleType("long");
+
+            case 'L':
+                return parseClassTypeSignature();
+
+            case 'S':
+                sigp++;
+                return new Type.SimpleType("short");
+
+            case 'T':
+                return parseTypeVariableSignature();
+
+            case 'V':
+                sigp++;
+                return new Type.SimpleType("void");
+
+            case 'Z':
+                sigp++;
+                return new Type.SimpleType("boolean");
+
+            case '[':
+                sigp++;
+                return new Type.ArrayType(parseTypeSignature());
+
+            case '*':
+                sigp++;
+                return new Type.WildcardType();
+
+            case '+':
+                sigp++;
+                return new Type.WildcardType("extends", parseTypeSignature());
+
+            case '-':
+                sigp++;
+                return new Type.WildcardType("super", parseTypeSignature());
+
+            default:
+                throw new IllegalStateException(debugInfo());
+        }
+    }
+
+    private List<Type> parseTypeSignatures(char term) {
+        sigp++;
+        List<Type> types = new ArrayList<Type>();
+        while (sig.charAt(sigp) != term)
+            types.add(parseTypeSignature());
+        sigp++;
+        return types;
+    }
+
+    private Type parseClassTypeSignature() {
+        assert sig.charAt(sigp) == 'L';
+        sigp++;
+        return parseClassTypeSignatureRest();
+    }
+
+    private Type parseClassTypeSignatureRest() {
+        StringBuilder sb = new StringBuilder();
+        Type t = null;
+        char sigch;
+        while (true) {
+            switch  (sigch = sig.charAt(sigp)) {
+                case '/':
+                    sigp++;
+                    sb.append(".");
+                    break;
+
+                case '.':
+                    sigp++;
+                    if (t == null)
+                        t = new Type.SimpleType(sb.toString());
+                    return new Type.InnerClassType(t, parseClassTypeSignatureRest());
+
+                case ';':
+                    sigp++;
+                    if (t == null)
+                        t = new Type.SimpleType(sb.toString());
+                    return t;
+
+                case '<':
+                    List<Type> argTypes = parseTypeSignatures('>');
+                    t = new Type.ClassType(sb.toString(), argTypes);
+                    break;
+
+                default:
+                    sigp++;
+                    sb.append(sigch);
+                    break;
+            }
+        }
+    }
+
+    private List<Type> parseTypeArgTypes() {
+        assert sig.charAt(sigp) == '<';
+        sigp++;
+        List<Type> types = null;
+        types = new ArrayList<Type>();
+        while (sig.charAt(sigp) != '>')
+            types.add(parseTypeArgType());
+        sigp++;
+        return types;
+    }
+
+    private Type parseTypeArgType() {
+        int sep = sig.indexOf(":", sigp);
+        String name = sig.substring(sigp, sep);
+        Type classBound = null;
+        List<Type> interfaceBounds = null;
+        sigp = sep + 1;
+        if (sig.charAt(sigp) != ':')
+            classBound = parseTypeSignature();
+        while (sig.charAt(sigp) == ':') {
+            sigp++;
+            if (interfaceBounds == null)
+                interfaceBounds = new ArrayList<Type>();
+            interfaceBounds.add(parseTypeSignature());
+        }
+        return new Type.TypeArgType(name, classBound, interfaceBounds);
+    }
+
+    private Type parseTypeVariableSignature() {
+        sigp++;
+        int sep = sig.indexOf(';', sigp);
+        Type t = new Type.SimpleType(sig.substring(sigp, sep));
+        sigp = sep + 1;
+        return t;
+    }
+
+    private String debugInfo() {
+        return sig.substring(0, sigp) + "!" + sig.charAt(sigp) + "!" + sig.substring(sigp+1);
+    }
+
+    private String sig;
+    private int sigp;
+
+    private Type type;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Signature_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,67 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.9.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Signature_attribute extends Attribute {
+    Signature_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        signature_index = cr.readUnsignedShort();
+    }
+
+    public Signature_attribute(ConstantPool constant_pool, int signature_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.Signature), signature_index);
+    }
+
+    public Signature_attribute(int name_index, int signature_index) {
+        super(name_index, 2);
+        this.signature_index = signature_index;
+    }
+
+    public String getSignature(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(signature_index);
+    }
+
+    public Signature getParsedSignature() {
+        return new Signature(signature_index);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitSignature(this, data);
+    }
+
+    public final int signature_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/SourceDebugExtension_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,71 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.15.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class SourceDebugExtension_attribute extends Attribute {
+    SourceDebugExtension_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        debug_extension = new byte[attribute_length];
+        cr.readFully(debug_extension);
+    }
+
+    public SourceDebugExtension_attribute(ConstantPool constant_pool, byte[] debug_extension)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.SourceDebugExtension), debug_extension);
+    }
+
+    public SourceDebugExtension_attribute(int name_index, byte[] debug_extension) {
+        super(name_index, debug_extension.length);
+        this.debug_extension = debug_extension;
+    }
+
+    public String getValue() {
+        DataInputStream d  = new DataInputStream(new ByteArrayInputStream(debug_extension));
+        try {
+            return d.readUTF();
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitSourceDebugExtension(this, data);
+    }
+
+    public final byte[] debug_extension;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/SourceFile_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,63 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.10.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class SourceFile_attribute extends Attribute {
+    SourceFile_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        sourcefile_index = cr.readUnsignedShort();
+    }
+
+    public SourceFile_attribute(ConstantPool constant_pool, int sourcefile_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.SourceFile), sourcefile_index);
+    }
+
+    public SourceFile_attribute(int name_index, int sourcefile_index) {
+        super(name_index, 2);
+        this.sourcefile_index = sourcefile_index;
+    }
+
+    public String getSourceFile(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(sourcefile_index);
+    }
+
+    public <R, P> R accept(Visitor<R, P> visitor, P p) {
+        return visitor.visitSourceFile(this, p);
+    }
+
+    public final int sourcefile_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/SourceID_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,61 @@
+/*
+ * 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.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class SourceID_attribute extends Attribute {
+
+    SourceID_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+        sourceID_index = cr.readUnsignedShort();
+    }
+
+    public SourceID_attribute(ConstantPool constant_pool, int sourceID_index)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.SourceID), sourceID_index);
+    }
+
+    public SourceID_attribute(int name_index, int sourceID_index) {
+        super(name_index, 2);
+        this.sourceID_index = sourceID_index;
+    }
+
+    String getSourceID(ConstantPool constant_pool) throws ConstantPoolException {
+        return constant_pool.getUTF8Value(sourceID_index);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitSourceID(this, data);
+    }
+
+    public final int sourceID_index;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/StackMapTable_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,349 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.4.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class StackMapTable_attribute extends Attribute {
+    static class InvalidStackMap extends AttributeException {
+        InvalidStackMap(String msg) {
+            super(msg);
+        }
+    }
+
+    StackMapTable_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, InvalidStackMap {
+        super(name_index, length);
+        number_of_entries = cr.readUnsignedShort();
+        entries = new stack_map_frame[number_of_entries];
+        for (int i = 0; i < number_of_entries; i++)
+            entries[i] = stack_map_frame.read(cr);
+    }
+
+    public StackMapTable_attribute(ConstantPool constant_pool, stack_map_frame[] entries)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.StackMapTable), entries);
+    }
+
+    public StackMapTable_attribute(int name_index, stack_map_frame[] entries) {
+        super(name_index, length(entries));
+        this.number_of_entries = entries.length;
+        this.entries = entries;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitStackMapTable(this, data);
+    }
+
+    static int length(stack_map_frame[] entries) {
+        int n = 2;
+        for (stack_map_frame entry: entries)
+            n += entry.length();
+        return n;
+    }
+
+    public final int number_of_entries;
+    public final stack_map_frame entries[];
+
+    public static abstract class stack_map_frame {
+        static stack_map_frame read(ClassReader cr)
+                throws IOException, InvalidStackMap {
+            int frame_type = cr.readUnsignedByte();
+            if (frame_type <= 63)
+                return new same_frame(frame_type);
+            else if (frame_type <= 127)
+                return new same_locals_1_stack_item_frame(frame_type, cr);
+            else if (frame_type <= 246)
+                throw new Error("unknown frame_type " + frame_type);
+            else if (frame_type == 247)
+                return new same_locals_1_stack_item_frame_extended(frame_type, cr);
+            else if (frame_type <= 250)
+                return new chop_frame(frame_type, cr);
+            else if (frame_type == 251)
+                return new same_frame_extended(frame_type, cr);
+            else if (frame_type <= 254)
+                return new append_frame(frame_type, cr);
+            else
+                return new full_frame(frame_type, cr);
+        }
+
+        protected stack_map_frame(int frame_type) {
+            this.frame_type = frame_type;
+        }
+
+        public int length() {
+            return 1;
+        }
+
+        public abstract <R,D> R accept(Visitor<R,D> visitor, D data);
+
+        public final int frame_type;
+
+        public static interface Visitor<R,P> {
+            R visit_same_frame(same_frame frame, P p);
+            R visit_same_locals_1_stack_item_frame(same_locals_1_stack_item_frame frame, P p);
+            R visit_same_locals_1_stack_item_frame_extended(same_locals_1_stack_item_frame_extended frame, P p);
+            R visit_chop_frame(chop_frame frame, P p);
+            R visit_same_frame_extended(same_frame_extended frame, P p);
+            R visit_append_frame(append_frame frame, P p);
+            R visit_full_frame(full_frame frame, P p);
+        }
+    }
+
+    public static class same_frame extends stack_map_frame {
+        same_frame(int frame_type) {
+            super(frame_type);
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_same_frame(this, data);
+        }
+    }
+
+    public static class same_locals_1_stack_item_frame extends stack_map_frame {
+        same_locals_1_stack_item_frame(int frame_type, ClassReader cr)
+                throws IOException, InvalidStackMap {
+            super(frame_type);
+            stack = new verification_type_info[1];
+            stack[0] = verification_type_info.read(cr);
+        }
+
+        @Override
+        public int length() {
+            return super.length() + stack[0].length();
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_same_locals_1_stack_item_frame(this, data);
+        }
+
+        public final verification_type_info[] stack;
+    }
+
+    public static class same_locals_1_stack_item_frame_extended extends stack_map_frame {
+        same_locals_1_stack_item_frame_extended(int frame_type, ClassReader cr)
+                throws IOException, InvalidStackMap {
+            super(frame_type);
+            offset_delta = cr.readUnsignedShort();
+            stack = new verification_type_info[1];
+            stack[0] = verification_type_info.read(cr);
+        }
+
+        @Override
+        public int length() {
+            return super.length() + 2 + stack[0].length();
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_same_locals_1_stack_item_frame_extended(this, data);
+        }
+
+        public final int offset_delta;
+        public final verification_type_info[] stack;
+    }
+
+    public static class chop_frame extends stack_map_frame {
+        chop_frame(int frame_type, ClassReader cr) throws IOException {
+            super(frame_type);
+            offset_delta = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return super.length() + 2;
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_chop_frame(this, data);
+        }
+
+        public final int offset_delta;
+    }
+
+    public static class same_frame_extended extends stack_map_frame {
+        same_frame_extended(int frame_type, ClassReader cr) throws IOException {
+            super(frame_type);
+            offset_delta = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return super.length() + 2;
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_same_frame_extended(this, data);
+        }
+
+        public final int offset_delta;
+    }
+
+    public static class append_frame extends stack_map_frame {
+        append_frame(int frame_type, ClassReader cr)
+                throws IOException, InvalidStackMap {
+            super(frame_type);
+            offset_delta = cr.readUnsignedShort();
+            locals = new verification_type_info[frame_type - 251];
+            for (int i = 0; i < locals.length; i++)
+                locals[i] = verification_type_info.read(cr);
+        }
+
+        @Override
+        public int length() {
+            int n = super.length() + 2;
+            for (verification_type_info local: locals)
+                n += local.length();
+            return n;
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_append_frame(this, data);
+        }
+
+        public final int offset_delta;
+        public final verification_type_info[] locals;
+    }
+
+    public static class full_frame extends stack_map_frame {
+        full_frame(int frame_type, ClassReader cr)
+                throws IOException, InvalidStackMap {
+            super(frame_type);
+            offset_delta = cr.readUnsignedShort();
+            number_of_locals = cr.readUnsignedShort();
+            locals = new verification_type_info[number_of_locals];
+            for (int i = 0; i < locals.length; i++)
+                locals[i] = verification_type_info.read(cr);
+            number_of_stack_items = cr.readUnsignedShort();
+            stack = new verification_type_info[number_of_stack_items];
+            for (int i = 0; i < stack.length; i++)
+                stack[i] = verification_type_info.read(cr);
+        }
+
+        @Override
+        public int length() {
+            int n = super.length() + 2;
+            for (verification_type_info local: locals)
+                n += local.length();
+            n += 2;
+            for (verification_type_info item: stack)
+                n += item.length();
+            return n;
+        }
+
+        public <R, D> R accept(Visitor<R, D> visitor, D data) {
+            return visitor.visit_full_frame(this, data);
+        }
+
+        public final int offset_delta;
+        public final int number_of_locals;
+        public final verification_type_info[] locals;
+        public final int number_of_stack_items;
+        public final verification_type_info[] stack;
+    }
+
+    public static class verification_type_info {
+        public static final int ITEM_Top = 0;
+        public static final int ITEM_Integer = 1;
+        public static final int ITEM_Float = 2;
+        public static final int ITEM_Long = 4;
+        public static final int ITEM_Double = 3;
+        public static final int ITEM_Null = 5;
+        public static final int ITEM_UninitializedThis = 6;
+        public static final int ITEM_Object = 7;
+        public static final int ITEM_Uninitialized = 8;
+
+        static verification_type_info read(ClassReader cr)
+                throws IOException, InvalidStackMap {
+            int tag = cr.readUnsignedByte();
+            switch (tag) {
+            case ITEM_Top:
+            case ITEM_Integer:
+            case ITEM_Float:
+            case ITEM_Long:
+            case ITEM_Double:
+            case ITEM_Null:
+            case ITEM_UninitializedThis:
+                return new verification_type_info(tag);
+
+            case ITEM_Object:
+                return new Object_variable_info(cr);
+
+            case ITEM_Uninitialized:
+                return new Uninitialized_variable_info(cr);
+
+            default:
+                throw new InvalidStackMap("unrecognized verification_type_info tag");
+            }
+        }
+
+        verification_type_info(int tag) {
+            this.tag = tag;
+        }
+
+        public int length() {
+            return 1;
+        }
+
+        public final int tag;
+    }
+
+    public static class Object_variable_info extends verification_type_info {
+        Object_variable_info(ClassReader cr) throws IOException {
+            super(ITEM_Object);
+            cpool_index = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return super.length() + 2;
+        }
+
+        public final int cpool_index;
+    }
+
+    public static class Uninitialized_variable_info extends verification_type_info {
+        Uninitialized_variable_info(ClassReader cr) throws IOException {
+            super(ITEM_Uninitialized);
+            offset = cr.readUnsignedShort();
+        }
+
+        @Override
+        public int length() {
+            return super.length() + 2;
+        }
+
+        public final int offset;
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/StackMap_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class StackMap_attribute extends Attribute {
+    StackMap_attribute(ClassReader cr, int name_index, int length)
+            throws IOException, StackMapTable_attribute.InvalidStackMap {
+        super(name_index, length);
+        number_of_entries = cr.readUnsignedShort();
+        entries = new stack_map_frame[number_of_entries];
+        for (int i = 0; i < number_of_entries; i++)
+            entries[i] = new stack_map_frame(cr);
+    }
+
+    public StackMap_attribute(ConstantPool constant_pool, stack_map_frame[] entries)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.StackMap), entries);
+    }
+
+    public StackMap_attribute(int name_index, stack_map_frame[] entries) {
+        super(name_index, StackMapTable_attribute.length(entries));
+        this.number_of_entries = entries.length;
+        this.entries = entries;
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitStackMap(this, data);
+    }
+
+    public final int number_of_entries;
+    public final stack_map_frame entries[];
+
+    public static class stack_map_frame extends StackMapTable_attribute.full_frame {
+        stack_map_frame(ClassReader cr)
+                throws IOException, StackMapTable_attribute.InvalidStackMap {
+            super(255, cr);
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Synthetic_attribute.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,55 @@
+/*
+ * 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 com.sun.tools.classfile;
+
+import java.io.IOException;
+
+/**
+ * See JVMS3, section 4.8.8.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Synthetic_attribute extends Attribute {
+    Synthetic_attribute(ClassReader cr, int name_index, int length) throws IOException {
+        super(name_index, length);
+    }
+
+    public Synthetic_attribute(ConstantPool constant_pool)
+            throws ConstantPoolException {
+        this(constant_pool.getUTF8Index(Attribute.Synthetic));
+    }
+
+    public Synthetic_attribute(int name_index) {
+        super(name_index, 0);
+    }
+
+    public <R, D> R accept(Visitor<R, D> visitor, D data) {
+        return visitor.visitSynthetic(this, data);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/Type.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,232 @@
+/*
+ * 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.tools.classfile;
+
+import java.util.List;
+
+/*
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Type {
+    protected Type() { }
+
+    public boolean isObject() {
+        return false;
+    }
+
+    protected static void append(StringBuilder sb, String prefix, List<? extends Type> types, String suffix) {
+        sb.append(prefix);
+        String sep = "";
+        for (Type t: types) {
+            sb.append(sep);
+            sb.append(t);
+            sep = ", ";
+        }
+        sb.append(suffix);
+    }
+
+    protected static void appendIfNotEmpty(StringBuilder sb, String prefix, List<? extends Type> types, String suffix) {
+        if (types != null && types.size() > 0)
+            append(sb, prefix, types, suffix);
+    }
+
+    public static class SimpleType extends Type {
+        public SimpleType(String name) {
+            this.name = name;
+        }
+
+        @Override
+        public String toString() {
+            return name;
+        }
+
+        @Override
+        public boolean isObject() {
+            return name.equals("java.lang.Object");
+        }
+
+        public final String name;
+    }
+
+    public static class ArrayType extends Type {
+        public ArrayType(Type elemType) {
+            this.elemType = elemType;
+        }
+
+        @Override
+        public String toString() {
+            return elemType + "[]";
+        }
+
+        public final Type elemType;
+    }
+
+    public static class MethodType extends Type {
+        public MethodType(List<? extends Type> argTypes, Type resultType) {
+            this(null, argTypes, resultType, null);
+        }
+
+        public MethodType(List<? extends Type> typeArgTypes,
+                List<? extends Type> argTypes,
+                Type returnType,
+                List<? extends Type> throwsTypes) {
+            this.typeArgTypes = typeArgTypes;
+            this.argTypes = argTypes;
+            this.returnType = returnType;
+            this.throwsTypes = throwsTypes;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            appendIfNotEmpty(sb, "<", typeArgTypes, "> ");
+            sb.append(returnType);
+            append(sb, " (", argTypes, ")");
+            appendIfNotEmpty(sb, " throws ", throwsTypes, "");
+            return sb.toString();
+        }
+
+        public final List<? extends Type> typeArgTypes;
+        public final List<? extends Type> argTypes;
+        public final Type returnType;
+        public final List<? extends Type> throwsTypes;
+    }
+
+    public static class ClassSigType extends Type {
+        public ClassSigType(List<Type> typeArgTypes, Type superclassType, List<Type> superinterfaceTypes) {
+            this.typeArgTypes = typeArgTypes;
+            this.superclassType = superclassType;
+            this.superinterfaceTypes = superinterfaceTypes;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            appendIfNotEmpty(sb, "<", typeArgTypes, ">");
+            if (superclassType != null && !superclassType.isObject()) {
+                sb.append(" extends ");
+                sb.append(superclassType);
+            }
+            appendIfNotEmpty(sb, " implements ", superinterfaceTypes, "");
+            return sb.toString();
+        }
+
+        public final List<Type> typeArgTypes;
+        public final Type superclassType;
+        public final List<Type> superinterfaceTypes;
+    }
+
+    public static class ClassType extends Type {
+        public ClassType(String name, List<Type> typeArgs) {
+            this.name = name;
+            this.typeArgs = typeArgs;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(name);
+            appendIfNotEmpty(sb, "<", typeArgs, ">");
+            return sb.toString();
+        }
+
+        public final String name;
+        public final List<Type> typeArgs;
+    }
+
+
+    public static class InnerClassType extends Type {
+        public InnerClassType(Type outerType, Type innerType) {
+            this.outerType = outerType;
+            this.innerType = innerType;
+        }
+
+        @Override
+        public String toString() {
+            return outerType + "." + innerType;
+        }
+
+        public final Type outerType;
+        public final Type innerType;
+    }
+
+    public static class TypeArgType extends Type {
+        public TypeArgType(String name, Type classBound, List<Type> interfaceBounds) {
+            this.name = name;
+            this.classBound = classBound;
+            this.interfaceBounds = interfaceBounds;
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder sb = new StringBuilder();
+            sb.append(name);
+            String sep = " extends ";
+            if (classBound != null && !classBound.isObject()) {
+                sb.append(sep);
+                sb.append(classBound);
+                sep = " & ";
+            }
+            if (interfaceBounds != null) {
+                for (Type bound: interfaceBounds) {
+                    sb.append(sep);
+                    sb.append(bound);
+                    sep = " & ";
+                }
+            }
+            return sb.toString();
+        }
+
+        public final String name;
+        public final Type classBound;
+        public final List<Type> interfaceBounds;
+    }
+
+    public static class WildcardType extends Type {
+        public WildcardType() {
+            this(null, null);
+        }
+
+        public WildcardType(String kind, Type boundType) {
+            this.kind = kind;
+            this.boundType = boundType;
+        }
+
+        @Override
+        public String toString() {
+            if (kind == null)
+                return "?";
+            else
+                return "? " + kind + " " + boundType;
+        }
+
+        public final String kind;
+        public final Type boundType;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/classfile/package.html	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title></title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head>
+  <body>
+    A minimalist library to read and write class files into objects closely 
+    based on the corresponding definitions in the Java Virtual Machine 
+    Specification (JVMS).
+  </body>
+</html>
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -36,12 +36,12 @@
 import javax.lang.model.type.TypeMirror;
 import javax.tools.*;
 
-import com.sun.source.tree.Tree;
 import com.sun.source.tree.*;
 import com.sun.source.util.*;
 import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.comp.*;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.main.*;
 import com.sun.tools.javac.model.*;
 import com.sun.tools.javac.parser.Parser;
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -31,7 +31,6 @@
 import java.io.PrintWriter;
 import java.io.Writer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.Iterator;
@@ -42,13 +41,13 @@
 import javax.tools.*;
 
 import com.sun.source.util.JavacTask;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.main.JavacOption.OptionKind;
 import com.sun.tools.javac.main.JavacOption;
 import com.sun.tools.javac.main.Main;
 import com.sun.tools.javac.main.RecognizedOptions.GrumpyHelper;
 import com.sun.tools.javac.main.RecognizedOptions;
 import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JavacFileManager;
 import com.sun.tools.javac.util.Log;
 import com.sun.tools.javac.util.Options;
 import com.sun.tools.javac.util.Pair;
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Lint.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Lint.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Types.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/TransTypes.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/BaseFileObject.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,79 @@
+/*
+ * 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.  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.tools.javac.file;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.nio.charset.CharsetDecoder;
+import javax.lang.model.element.Modifier;
+import javax.lang.model.element.NestingKind;
+import javax.tools.JavaFileObject;
+
+import static javax.tools.JavaFileObject.Kind.*;
+
+public abstract class BaseFileObject implements JavaFileObject {
+
+    public JavaFileObject.Kind getKind() {
+        String n = getName();
+        if (n.endsWith(CLASS.extension))
+            return CLASS;
+        else if (n.endsWith(SOURCE.extension))
+            return SOURCE;
+        else if (n.endsWith(HTML.extension))
+            return HTML;
+        else
+            return OTHER;
+    }
+
+    @Override
+    public String toString() {
+        return getPath();
+    }
+
+    /** @deprecated see bug 6410637 */
+    @Deprecated
+    public String getPath() {
+        return getName();
+    }
+
+    /** @deprecated see bug 6410637 */
+    @Deprecated
+    abstract public String getName();
+
+    public NestingKind getNestingKind() { return null; }
+
+    public Modifier getAccessLevel()  { return null; }
+
+    public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
+        return new InputStreamReader(openInputStream(), getDecoder(ignoreEncodingErrors));
+    }
+
+    protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
+        throw new UnsupportedOperationException();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,1718 @@
+/*
+ * 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.  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.tools.javac.file;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.lang.ref.SoftReference;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CoderResult;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import javax.lang.model.SourceVersion;
+import javax.tools.FileObject;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+import com.sun.tools.javac.code.Source;
+import com.sun.tools.javac.main.JavacOption;
+import com.sun.tools.javac.main.OptionName;
+import com.sun.tools.javac.main.RecognizedOptions;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Options;
+
+import static com.sun.tools.javac.main.OptionName.*;
+import static javax.tools.StandardLocation.*;
+
+/**
+ * This class provides access to the source, class and other files
+ * used by the compiler and related tools.
+ */
+public class JavacFileManager implements StandardJavaFileManager {
+
+    private static final String[] symbolFileLocation = { "lib", "ct.sym" };
+    private static final String symbolFilePrefix = "META-INF/sym/rt.jar/";
+
+    boolean useZipFileIndex;
+
+    private static int symbolFilePrefixLength = 0;
+    static {
+        try {
+            symbolFilePrefixLength = symbolFilePrefix.getBytes("UTF-8").length;
+        } catch (java.io.UnsupportedEncodingException uee) {
+            // Can't happen...UTF-8 is always supported.
+        }
+    }
+
+    private static boolean CHECK_ZIP_TIMESTAMP = false;
+    private static Map<File, Boolean> isDirectory = new ConcurrentHashMap<File, Boolean>();
+
+
+    public static char[] toArray(CharBuffer buffer) {
+        if (buffer.hasArray())
+            return ((CharBuffer)buffer.compact().flip()).array();
+        else
+            return buffer.toString().toCharArray();
+    }
+
+    /**
+     * The log to be used for error reporting.
+     */
+    protected Log log;
+
+    /** Encapsulates knowledge of paths
+     */
+    private Paths paths;
+
+    private Options options;
+
+    private final File uninited = new File("U N I N I T E D");
+
+    private final Set<JavaFileObject.Kind> sourceOrClass =
+        EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
+
+    /** The standard output directory, primarily used for classes.
+     *  Initialized by the "-d" option.
+     *  If classOutDir = null, files are written into same directory as the sources
+     *  they were generated from.
+     */
+    private File classOutDir = uninited;
+
+    /** The output directory, used when generating sources while processing annotations.
+     *  Initialized by the "-s" option.
+     */
+    private File sourceOutDir = uninited;
+
+    protected boolean mmappedIO;
+    protected boolean ignoreSymbolFile;
+
+    /**
+     * User provided charset (through javax.tools).
+     */
+    protected Charset charset;
+
+    /**
+     * Register a Context.Factory to create a JavacFileManager.
+     */
+    public static void preRegister(final Context context) {
+        context.put(JavaFileManager.class, new Context.Factory<JavaFileManager>() {
+            public JavaFileManager make() {
+                return new JavacFileManager(context, true, null);
+            }
+        });
+    }
+
+    /**
+     * Create a JavacFileManager using a given context, optionally registering
+     * it as the JavaFileManager for that context.
+     */
+    public JavacFileManager(Context context, boolean register, Charset charset) {
+        if (register)
+            context.put(JavaFileManager.class, this);
+        byteBufferCache = new ByteBufferCache();
+        this.charset = charset;
+        setContext(context);
+    }
+
+    /**
+     * Set the context for JavacFileManager.
+     */
+    public void setContext(Context context) {
+        log = Log.instance(context);
+        if (paths == null) {
+            paths = Paths.instance(context);
+        } else {
+            // Reuse the Paths object as it stores the locations that
+            // have been set with setLocation, etc.
+            paths.setContext(context);
+        }
+
+        options = Options.instance(context);
+
+        useZipFileIndex = System.getProperty("useJavaUtilZip") == null;// TODO: options.get("useJavaUtilZip") == null;
+        CHECK_ZIP_TIMESTAMP = System.getProperty("checkZipIndexTimestamp") != null;// TODO: options.get("checkZipIndexTimestamp") != null;
+
+        mmappedIO = options.get("mmappedIO") != null;
+        ignoreSymbolFile = options.get("ignore.symbol.file") != null;
+    }
+
+    public JavaFileObject getFileForInput(String name) {
+        return getRegularFile(new File(name));
+    }
+
+    public JavaFileObject getRegularFile(File file) {
+        return new RegularFileObject(file);
+    }
+
+    public JavaFileObject getFileForOutput(String classname,
+                                           JavaFileObject.Kind kind,
+                                           JavaFileObject sibling)
+        throws IOException
+    {
+        return getJavaFileForOutput(CLASS_OUTPUT, classname, kind, sibling);
+    }
+
+    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
+        ListBuffer<File> files = new ListBuffer<File>();
+        for (String name : names)
+            files.append(new File(nullCheck(name)));
+        return getJavaFileObjectsFromFiles(files.toList());
+    }
+
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
+        return getJavaFileObjectsFromStrings(Arrays.asList(nullCheck(names)));
+    }
+
+    protected JavaFileObject.Kind getKind(String extension) {
+        if (extension.equals(JavaFileObject.Kind.CLASS.extension))
+            return JavaFileObject.Kind.CLASS;
+        else if (extension.equals(JavaFileObject.Kind.SOURCE.extension))
+            return JavaFileObject.Kind.SOURCE;
+        else if (extension.equals(JavaFileObject.Kind.HTML.extension))
+            return JavaFileObject.Kind.HTML;
+        else
+            return JavaFileObject.Kind.OTHER;
+    }
+
+    private static boolean isValidName(String name) {
+        // Arguably, isValidName should reject keywords (such as in SourceVersion.isName() ),
+        // but the set of keywords depends on the source level, and we don't want
+        // impls of JavaFileManager to have to be dependent on the source level.
+        // Therefore we simply check that the argument is a sequence of identifiers
+        // separated by ".".
+        for (String s : name.split("\\.", -1)) {
+            if (!SourceVersion.isIdentifier(s))
+                return false;
+        }
+        return true;
+    }
+
+    private static void validateClassName(String className) {
+        if (!isValidName(className))
+            throw new IllegalArgumentException("Invalid class name: " + className);
+    }
+
+    private static void validatePackageName(String packageName) {
+        if (packageName.length() > 0 && !isValidName(packageName))
+            throw new IllegalArgumentException("Invalid packageName name: " + packageName);
+    }
+
+    public static void testName(String name,
+                                boolean isValidPackageName,
+                                boolean isValidClassName)
+    {
+        try {
+            validatePackageName(name);
+            if (!isValidPackageName)
+                throw new AssertionError("Invalid package name accepted: " + name);
+            printAscii("Valid package name: \"%s\"", name);
+        } catch (IllegalArgumentException e) {
+            if (isValidPackageName)
+                throw new AssertionError("Valid package name rejected: " + name);
+            printAscii("Invalid package name: \"%s\"", name);
+        }
+        try {
+            validateClassName(name);
+            if (!isValidClassName)
+                throw new AssertionError("Invalid class name accepted: " + name);
+            printAscii("Valid class name: \"%s\"", name);
+        } catch (IllegalArgumentException e) {
+            if (isValidClassName)
+                throw new AssertionError("Valid class name rejected: " + name);
+            printAscii("Invalid class name: \"%s\"", name);
+        }
+    }
+    private static void printAscii(String format, Object... args) {
+        String message;
+        try {
+            final String ascii = "US-ASCII";
+            message = new String(String.format(null, format, args).getBytes(ascii), ascii);
+        } catch (java.io.UnsupportedEncodingException ex) {
+            throw new AssertionError(ex);
+        }
+        System.out.println(message);
+    }
+
+    /** Return external representation of name,
+     *  converting '.' to File.separatorChar.
+     */
+    private static String externalizeFileName(CharSequence name) {
+        return name.toString().replace('.', File.separatorChar);
+    }
+
+    private static String externalizeFileName(CharSequence n, JavaFileObject.Kind kind) {
+        return externalizeFileName(n) + kind.extension;
+    }
+
+    private static String baseName(String fileName) {
+        return fileName.substring(fileName.lastIndexOf(File.separatorChar) + 1);
+    }
+
+    /**
+     * Insert all files in subdirectory `subdirectory' of `directory' which end
+     * in one of the extensions in `extensions' into packageSym.
+     */
+    private void listDirectory(File directory,
+                               String subdirectory,
+                               Set<JavaFileObject.Kind> fileKinds,
+                               boolean recurse,
+                               ListBuffer<JavaFileObject> l) {
+        Archive archive = archives.get(directory);
+
+        boolean isFile = false;
+        if (CHECK_ZIP_TIMESTAMP) {
+            Boolean isf = isDirectory.get(directory);
+            if (isf == null) {
+                isFile = directory.isFile();
+                isDirectory.put(directory, isFile);
+            }
+            else {
+                isFile = directory.isFile();
+            }
+        }
+        else {
+            isFile = directory.isFile();
+        }
+
+        if (archive != null || isFile) {
+            if (archive == null) {
+                try {
+                    archive = openArchive(directory);
+                } catch (IOException ex) {
+                    log.error("error.reading.file",
+                       directory, ex.getLocalizedMessage());
+                    return;
+                }
+            }
+            if (subdirectory.length() != 0) {
+                if (!useZipFileIndex) {
+                    subdirectory = subdirectory.replace('\\', '/');
+                    if (!subdirectory.endsWith("/")) subdirectory = subdirectory + "/";
+                }
+                else {
+                    if (File.separatorChar == '/') {
+                        subdirectory = subdirectory.replace('\\', '/');
+                    }
+                    else {
+                        subdirectory = subdirectory.replace('/', '\\');
+                    }
+
+                    if (!subdirectory.endsWith(File.separator)) subdirectory = subdirectory + File.separator;
+                }
+            }
+
+            List<String> files = archive.getFiles(subdirectory);
+            if (files != null) {
+                for (String file; !files.isEmpty(); files = files.tail) {
+                    file = files.head;
+                    if (isValidFile(file, fileKinds)) {
+                        l.append(archive.getFileObject(subdirectory, file));
+                    }
+                }
+            }
+            if (recurse) {
+                for (String s: archive.getSubdirectories()) {
+                    if (s.startsWith(subdirectory) && !s.equals(subdirectory)) {
+                        // Because the archive map is a flat list of directories,
+                        // the enclosing loop will pick up all child subdirectories.
+                        // Therefore, there is no need to recurse deeper.
+                        listDirectory(directory, s, fileKinds, false, l);
+                    }
+                }
+            }
+        } else {
+            File d = subdirectory.length() != 0
+                ? new File(directory, subdirectory)
+                : directory;
+            if (!caseMapCheck(d, subdirectory))
+                return;
+
+            File[] files = d.listFiles();
+            if (files == null)
+                return;
+
+            for (File f: files) {
+                String fname = f.getName();
+                if (f.isDirectory()) {
+                    if (recurse && SourceVersion.isIdentifier(fname)) {
+                        listDirectory(directory,
+                                      subdirectory + File.separator + fname,
+                                      fileKinds,
+                                      recurse,
+                                      l);
+                    }
+                } else {
+                    if (isValidFile(fname, fileKinds)) {
+                        JavaFileObject fe =
+                        new RegularFileObject(fname, new File(d, fname));
+                        l.append(fe);
+                    }
+                }
+            }
+        }
+    }
+
+    private boolean isValidFile(String s, Set<JavaFileObject.Kind> fileKinds) {
+        int lastDot = s.lastIndexOf(".");
+        String extn = (lastDot == -1 ? s : s.substring(lastDot));
+        JavaFileObject.Kind kind = getKind(extn);
+        return fileKinds.contains(kind);
+    }
+
+    private static final boolean fileSystemIsCaseSensitive =
+        File.separatorChar == '/';
+
+    /** Hack to make Windows case sensitive. Test whether given path
+     *  ends in a string of characters with the same case as given name.
+     *  Ignore file separators in both path and name.
+     */
+    private boolean caseMapCheck(File f, String name) {
+        if (fileSystemIsCaseSensitive) return true;
+        // Note that getCanonicalPath() returns the case-sensitive
+        // spelled file name.
+        String path;
+        try {
+            path = f.getCanonicalPath();
+        } catch (IOException ex) {
+            return false;
+        }
+        char[] pcs = path.toCharArray();
+        char[] ncs = name.toCharArray();
+        int i = pcs.length - 1;
+        int j = ncs.length - 1;
+        while (i >= 0 && j >= 0) {
+            while (i >= 0 && pcs[i] == File.separatorChar) i--;
+            while (j >= 0 && ncs[j] == File.separatorChar) j--;
+            if (i >= 0 && j >= 0) {
+                if (pcs[i] != ncs[j]) return false;
+                i--;
+                j--;
+            }
+        }
+        return j < 0;
+    }
+
+    /**
+     * An archive provides a flat directory structure of a ZipFile by
+     * mapping directory names to lists of files (basenames).
+     */
+    public interface Archive {
+        void close() throws IOException;
+
+        boolean contains(String name);
+
+        JavaFileObject getFileObject(String subdirectory, String file);
+
+        List<String> getFiles(String subdirectory);
+
+        Set<String> getSubdirectories();
+    }
+
+    public class ZipArchive implements Archive {
+        protected final Map<String,List<String>> map;
+        protected final ZipFile zdir;
+        public ZipArchive(ZipFile zdir) throws IOException {
+            this.zdir = zdir;
+            this.map = new HashMap<String,List<String>>();
+            for (Enumeration<? extends ZipEntry> e = zdir.entries(); e.hasMoreElements(); ) {
+                ZipEntry entry;
+                try {
+                    entry = e.nextElement();
+                } catch (InternalError ex) {
+                    IOException io = new IOException();
+                    io.initCause(ex); // convenience constructors added in Mustang :-(
+                    throw io;
+                }
+                addZipEntry(entry);
+            }
+        }
+
+        void addZipEntry(ZipEntry entry) {
+            String name = entry.getName();
+            int i = name.lastIndexOf('/');
+            String dirname = name.substring(0, i+1);
+            String basename = name.substring(i+1);
+            if (basename.length() == 0)
+                return;
+            List<String> list = map.get(dirname);
+            if (list == null)
+                list = List.nil();
+            list = list.prepend(basename);
+            map.put(dirname, list);
+        }
+
+        public boolean contains(String name) {
+            int i = name.lastIndexOf('/');
+            String dirname = name.substring(0, i+1);
+            String basename = name.substring(i+1);
+            if (basename.length() == 0)
+                return false;
+            List<String> list = map.get(dirname);
+            return (list != null && list.contains(basename));
+        }
+
+        public List<String> getFiles(String subdirectory) {
+            return map.get(subdirectory);
+        }
+
+        public JavaFileObject getFileObject(String subdirectory, String file) {
+            ZipEntry ze = zdir.getEntry(subdirectory + file);
+            return new ZipFileObject(file, zdir, ze);
+        }
+
+        public Set<String> getSubdirectories() {
+            return map.keySet();
+        }
+
+        public void close() throws IOException {
+            zdir.close();
+        }
+    }
+
+    public class SymbolArchive extends ZipArchive {
+        final File origFile;
+        public SymbolArchive(File orig, ZipFile zdir) throws IOException {
+            super(zdir);
+            this.origFile = orig;
+        }
+
+        @Override
+        void addZipEntry(ZipEntry entry) {
+            // called from super constructor, may not refer to origFile.
+            String name = entry.getName();
+            if (!name.startsWith(symbolFilePrefix))
+                return;
+            name = name.substring(symbolFilePrefix.length());
+            int i = name.lastIndexOf('/');
+            String dirname = name.substring(0, i+1);
+            String basename = name.substring(i+1);
+            if (basename.length() == 0)
+                return;
+            List<String> list = map.get(dirname);
+            if (list == null)
+                list = List.nil();
+            list = list.prepend(basename);
+            map.put(dirname, list);
+        }
+
+        @Override
+        public JavaFileObject getFileObject(String subdirectory, String file) {
+            return super.getFileObject(symbolFilePrefix + subdirectory, file);
+        }
+    }
+
+    public class MissingArchive implements Archive {
+        final File zipFileName;
+        public MissingArchive(File name) {
+            zipFileName = name;
+        }
+        public boolean contains(String name) {
+              return false;
+        }
+
+        public void close() {
+        }
+
+        public JavaFileObject getFileObject(String subdirectory, String file) {
+            return null;
+        }
+
+        public List<String> getFiles(String subdirectory) {
+            return List.nil();
+        }
+
+        public Set<String> getSubdirectories() {
+            return Collections.emptySet();
+        }
+    }
+
+    /** A directory of zip files already opened.
+     */
+    Map<File, Archive> archives = new HashMap<File,Archive>();
+
+    /** Open a new zip file directory.
+     */
+    protected Archive openArchive(File zipFileName) throws IOException {
+        Archive archive = archives.get(zipFileName);
+        if (archive == null) {
+            File origZipFileName = zipFileName;
+            if (!ignoreSymbolFile && paths.isBootClassPathRtJar(zipFileName)) {
+                File file = zipFileName.getParentFile().getParentFile(); // ${java.home}
+                if (new File(file.getName()).equals(new File("jre")))
+                    file = file.getParentFile();
+                // file == ${jdk.home}
+                for (String name : symbolFileLocation)
+                    file = new File(file, name);
+                // file == ${jdk.home}/lib/ct.sym
+                if (file.exists())
+                    zipFileName = file;
+            }
+
+            try {
+
+                ZipFile zdir = null;
+
+                boolean usePreindexedCache = false;
+                String preindexCacheLocation = null;
+
+                if (!useZipFileIndex) {
+                    zdir = new ZipFile(zipFileName);
+                }
+                else {
+                    usePreindexedCache = options.get("usezipindex") != null;
+                    preindexCacheLocation = options.get("java.io.tmpdir");
+                    String optCacheLoc = options.get("cachezipindexdir");
+
+                    if (optCacheLoc != null && optCacheLoc.length() != 0) {
+                        if (optCacheLoc.startsWith("\"")) {
+                            if (optCacheLoc.endsWith("\"")) {
+                                optCacheLoc = optCacheLoc.substring(1, optCacheLoc.length() - 1);
+                            }
+                           else {
+                                optCacheLoc = optCacheLoc.substring(1);
+                            }
+                        }
+
+                        File cacheDir = new File(optCacheLoc);
+                        if (cacheDir.exists() && cacheDir.canWrite()) {
+                            preindexCacheLocation = optCacheLoc;
+                            if (!preindexCacheLocation.endsWith("/") &&
+                                !preindexCacheLocation.endsWith(File.separator)) {
+                                preindexCacheLocation += File.separator;
+                            }
+                        }
+                    }
+                }
+
+                if (origZipFileName == zipFileName) {
+                    if (!useZipFileIndex) {
+                        archive = new ZipArchive(zdir);
+                    } else {
+                        archive = new ZipFileIndexArchive(this, ZipFileIndex.getZipFileIndex(zipFileName, 0,
+                                usePreindexedCache, preindexCacheLocation, options.get("writezipindexfiles") != null));
+                    }
+                }
+                else {
+                    if (!useZipFileIndex) {
+                        archive = new SymbolArchive(origZipFileName, zdir);
+                    }
+                    else {
+                        archive = new ZipFileIndexArchive(this, ZipFileIndex.getZipFileIndex(zipFileName, symbolFilePrefixLength,
+                                usePreindexedCache, preindexCacheLocation, options.get("writezipindexfiles") != null));
+                    }
+                }
+            } catch (FileNotFoundException ex) {
+                archive = new MissingArchive(zipFileName);
+            } catch (IOException ex) {
+                log.error("error.reading.file", zipFileName, ex.getLocalizedMessage());
+                archive = new MissingArchive(zipFileName);
+            }
+
+            archives.put(origZipFileName, archive);
+        }
+        return archive;
+    }
+
+    /** Flush any output resources.
+     */
+    public void flush() {
+        contentCache.clear();
+    }
+
+    /**
+     * Close the JavaFileManager, releasing resources.
+     */
+    public void close() {
+        for (Iterator<Archive> i = archives.values().iterator(); i.hasNext(); ) {
+            Archive a = i.next();
+            i.remove();
+            try {
+                a.close();
+            } catch (IOException e) {
+            }
+        }
+    }
+
+    private Map<JavaFileObject, SoftReference<CharBuffer>> contentCache = new HashMap<JavaFileObject, SoftReference<CharBuffer>>();
+
+    private String defaultEncodingName;
+    private String getDefaultEncodingName() {
+        if (defaultEncodingName == null) {
+            defaultEncodingName =
+                new OutputStreamWriter(new ByteArrayOutputStream()).getEncoding();
+        }
+        return defaultEncodingName;
+    }
+
+    protected String getEncodingName() {
+        String encName = options.get(OptionName.ENCODING);
+        if (encName == null)
+            return getDefaultEncodingName();
+        else
+            return encName;
+    }
+
+    protected Source getSource() {
+        String sourceName = options.get(OptionName.SOURCE);
+        Source source = null;
+        if (sourceName != null)
+            source = Source.lookup(sourceName);
+        return (source != null ? source : Source.DEFAULT);
+    }
+
+    /**
+     * Make a byte buffer from an input stream.
+     */
+    private ByteBuffer makeByteBuffer(InputStream in)
+        throws IOException {
+        int limit = in.available();
+        if (mmappedIO && in instanceof FileInputStream) {
+            // Experimental memory mapped I/O
+            FileInputStream fin = (FileInputStream)in;
+            return fin.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, limit);
+        }
+        if (limit < 1024) limit = 1024;
+        ByteBuffer result = byteBufferCache.get(limit);
+        int position = 0;
+        while (in.available() != 0) {
+            if (position >= limit)
+                // expand buffer
+                result = ByteBuffer.
+                    allocate(limit <<= 1).
+                    put((ByteBuffer)result.flip());
+            int count = in.read(result.array(),
+                position,
+                limit - position);
+            if (count < 0) break;
+            result.position(position += count);
+        }
+        return (ByteBuffer)result.flip();
+    }
+
+    /**
+     * A single-element cache of direct byte buffers.
+     */
+    private static class ByteBufferCache {
+        private ByteBuffer cached;
+        ByteBuffer get(int capacity) {
+            if (capacity < 20480) capacity = 20480;
+            ByteBuffer result =
+                (cached != null && cached.capacity() >= capacity)
+                ? (ByteBuffer)cached.clear()
+                : ByteBuffer.allocate(capacity + capacity>>1);
+            cached = null;
+            return result;
+        }
+        void put(ByteBuffer x) {
+            cached = x;
+        }
+    }
+    private final ByteBufferCache byteBufferCache;
+
+    private CharsetDecoder getDecoder(String encodingName, boolean ignoreEncodingErrors) {
+        Charset charset = (this.charset == null)
+            ? Charset.forName(encodingName)
+            : this.charset;
+        CharsetDecoder decoder = charset.newDecoder();
+
+        CodingErrorAction action;
+        if (ignoreEncodingErrors)
+            action = CodingErrorAction.REPLACE;
+        else
+            action = CodingErrorAction.REPORT;
+
+        return decoder
+            .onMalformedInput(action)
+            .onUnmappableCharacter(action);
+    }
+
+    /**
+     * Decode a ByteBuffer into a CharBuffer.
+     */
+    private CharBuffer decode(ByteBuffer inbuf, boolean ignoreEncodingErrors) {
+        String encodingName = getEncodingName();
+        CharsetDecoder decoder;
+        try {
+            decoder = getDecoder(encodingName, ignoreEncodingErrors);
+        } catch (IllegalCharsetNameException e) {
+            log.error("unsupported.encoding", encodingName);
+            return (CharBuffer)CharBuffer.allocate(1).flip();
+        } catch (UnsupportedCharsetException e) {
+            log.error("unsupported.encoding", encodingName);
+            return (CharBuffer)CharBuffer.allocate(1).flip();
+        }
+
+        // slightly overestimate the buffer size to avoid reallocation.
+        float factor =
+            decoder.averageCharsPerByte() * 0.8f +
+            decoder.maxCharsPerByte() * 0.2f;
+        CharBuffer dest = CharBuffer.
+            allocate(10 + (int)(inbuf.remaining()*factor));
+
+        while (true) {
+            CoderResult result = decoder.decode(inbuf, dest, true);
+            dest.flip();
+
+            if (result.isUnderflow()) { // done reading
+                // make sure there is at least one extra character
+                if (dest.limit() == dest.capacity()) {
+                    dest = CharBuffer.allocate(dest.capacity()+1).put(dest);
+                    dest.flip();
+                }
+                return dest;
+            } else if (result.isOverflow()) { // buffer too small; expand
+                int newCapacity =
+                    10 + dest.capacity() +
+                    (int)(inbuf.remaining()*decoder.maxCharsPerByte());
+                dest = CharBuffer.allocate(newCapacity).put(dest);
+            } else if (result.isMalformed() || result.isUnmappable()) {
+                // bad character in input
+
+                // report coding error (warn only pre 1.5)
+                if (!getSource().allowEncodingErrors()) {
+                    log.error(new SimpleDiagnosticPosition(dest.limit()),
+                              "illegal.char.for.encoding",
+                              charset == null ? encodingName : charset.name());
+                } else {
+                    log.warning(new SimpleDiagnosticPosition(dest.limit()),
+                                "illegal.char.for.encoding",
+                                charset == null ? encodingName : charset.name());
+                }
+
+                // skip past the coding error
+                inbuf.position(inbuf.position() + result.length());
+
+                // undo the flip() to prepare the output buffer
+                // for more translation
+                dest.position(dest.limit());
+                dest.limit(dest.capacity());
+                dest.put((char)0xfffd); // backward compatible
+            } else {
+                throw new AssertionError(result);
+            }
+        }
+        // unreached
+    }
+
+    public ClassLoader getClassLoader(Location location) {
+        nullCheck(location);
+        Iterable<? extends File> path = getLocation(location);
+        if (path == null)
+            return null;
+        ListBuffer<URL> lb = new ListBuffer<URL>();
+        for (File f: path) {
+            try {
+                lb.append(f.toURI().toURL());
+            } catch (MalformedURLException e) {
+                throw new AssertionError(e);
+            }
+        }
+        return new URLClassLoader(lb.toArray(new URL[lb.size()]),
+            getClass().getClassLoader());
+    }
+
+    public Iterable<JavaFileObject> list(Location location,
+                                         String packageName,
+                                         Set<JavaFileObject.Kind> kinds,
+                                         boolean recurse)
+        throws IOException
+    {
+        // validatePackageName(packageName);
+        nullCheck(packageName);
+        nullCheck(kinds);
+
+        Iterable<? extends File> path = getLocation(location);
+        if (path == null)
+            return List.nil();
+        String subdirectory = externalizeFileName(packageName);
+        ListBuffer<JavaFileObject> results = new ListBuffer<JavaFileObject>();
+
+        for (File directory : path)
+            listDirectory(directory, subdirectory, kinds, recurse, results);
+
+        return results.toList();
+    }
+
+    public String inferBinaryName(Location location, JavaFileObject file) {
+        file.getClass(); // null check
+        location.getClass(); // null check
+        // Need to match the path semantics of list(location, ...)
+        Iterable<? extends File> path = getLocation(location);
+        if (path == null) {
+            //System.err.println("Path for " + location + " is null");
+            return null;
+        }
+        //System.err.println("Path for " + location + " is " + path);
+
+        if (file instanceof RegularFileObject) {
+            RegularFileObject r = (RegularFileObject) file;
+            String rPath = r.getPath();
+            //System.err.println("RegularFileObject " + file + " " +r.getPath());
+            for (File dir: path) {
+                //System.err.println("dir: " + dir);
+                String dPath = dir.getPath();
+                if (!dPath.endsWith(File.separator))
+                    dPath += File.separator;
+                if (rPath.regionMatches(true, 0, dPath, 0, dPath.length())
+                    && new File(rPath.substring(0, dPath.length())).equals(new File(dPath))) {
+                    String relativeName = rPath.substring(dPath.length());
+                    return removeExtension(relativeName).replace(File.separatorChar, '.');
+                }
+            }
+        } else if (file instanceof ZipFileObject) {
+            ZipFileObject z = (ZipFileObject) file;
+            String entryName = z.getZipEntryName();
+            if (entryName.startsWith(symbolFilePrefix))
+                entryName = entryName.substring(symbolFilePrefix.length());
+            return removeExtension(entryName).replace('/', '.');
+        } else if (file instanceof ZipFileIndexFileObject) {
+            ZipFileIndexFileObject z = (ZipFileIndexFileObject) file;
+            String entryName = z.getZipEntryName();
+            if (entryName.startsWith(symbolFilePrefix))
+                entryName = entryName.substring(symbolFilePrefix.length());
+            return removeExtension(entryName).replace(File.separatorChar, '.');
+        } else
+            throw new IllegalArgumentException(file.getClass().getName());
+        // System.err.println("inferBinaryName failed for " + file);
+        return null;
+    }
+    // where
+        private static String removeExtension(String fileName) {
+            int lastDot = fileName.lastIndexOf(".");
+            return (lastDot == -1 ? fileName : fileName.substring(0, lastDot));
+        }
+
+    public boolean isSameFile(FileObject a, FileObject b) {
+        nullCheck(a);
+        nullCheck(b);
+        if (!(a instanceof BaseFileObject))
+            throw new IllegalArgumentException("Not supported: " + a);
+        if (!(b instanceof BaseFileObject))
+            throw new IllegalArgumentException("Not supported: " + b);
+        return a.equals(b);
+    }
+
+    public boolean handleOption(String current, Iterator<String> remaining) {
+        for (JavacOption o: javacFileManagerOptions) {
+            if (o.matches(current))  {
+                if (o.hasArg()) {
+                    if (remaining.hasNext()) {
+                        if (!o.process(options, current, remaining.next()))
+                            return true;
+                    }
+                } else {
+                    if (!o.process(options, current))
+                        return true;
+                }
+                // operand missing, or process returned false
+                throw new IllegalArgumentException(current);
+            }
+        }
+
+        return false;
+    }
+    // where
+        private static JavacOption[] javacFileManagerOptions =
+            RecognizedOptions.getJavacFileManagerOptions(
+            new RecognizedOptions.GrumpyHelper());
+
+    public int isSupportedOption(String option) {
+        for (JavacOption o : javacFileManagerOptions) {
+            if (o.matches(option))
+                return o.hasArg() ? 1 : 0;
+        }
+        return -1;
+    }
+
+    public boolean hasLocation(Location location) {
+        return getLocation(location) != null;
+    }
+
+    public JavaFileObject getJavaFileForInput(Location location,
+                                              String className,
+                                              JavaFileObject.Kind kind)
+        throws IOException
+    {
+        nullCheck(location);
+        // validateClassName(className);
+        nullCheck(className);
+        nullCheck(kind);
+        if (!sourceOrClass.contains(kind))
+            throw new IllegalArgumentException("Invalid kind " + kind);
+        return getFileForInput(location, externalizeFileName(className, kind));
+    }
+
+    public FileObject getFileForInput(Location location,
+                                      String packageName,
+                                      String relativeName)
+        throws IOException
+    {
+        nullCheck(location);
+        // validatePackageName(packageName);
+        nullCheck(packageName);
+        if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701
+            throw new IllegalArgumentException("Invalid relative name: " + relativeName);
+        String name = packageName.length() == 0
+            ? relativeName
+            : new File(externalizeFileName(packageName), relativeName).getPath();
+        return getFileForInput(location, name);
+    }
+
+    private JavaFileObject getFileForInput(Location location, String name) throws IOException {
+        Iterable<? extends File> path = getLocation(location);
+        if (path == null)
+            return null;
+
+        for (File dir: path) {
+            if (dir.isDirectory()) {
+                File f = new File(dir, name.replace('/', File.separatorChar));
+                if (f.exists())
+                    return new RegularFileObject(f);
+            } else {
+                Archive a = openArchive(dir);
+                if (a.contains(name)) {
+                    int i = name.lastIndexOf('/');
+                    String dirname = name.substring(0, i+1);
+                    String basename = name.substring(i+1);
+                    return a.getFileObject(dirname, basename);
+                }
+
+            }
+        }
+        return null;
+
+    }
+
+    public JavaFileObject getJavaFileForOutput(Location location,
+                                               String className,
+                                               JavaFileObject.Kind kind,
+                                               FileObject sibling)
+        throws IOException
+    {
+        nullCheck(location);
+        // validateClassName(className);
+        nullCheck(className);
+        nullCheck(kind);
+        if (!sourceOrClass.contains(kind))
+            throw new IllegalArgumentException("Invalid kind " + kind);
+        return getFileForOutput(location, externalizeFileName(className, kind), sibling);
+    }
+
+    public FileObject getFileForOutput(Location location,
+                                       String packageName,
+                                       String relativeName,
+                                       FileObject sibling)
+        throws IOException
+    {
+        nullCheck(location);
+        // validatePackageName(packageName);
+        nullCheck(packageName);
+        if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701
+            throw new IllegalArgumentException("relativeName is invalid");
+        String name = packageName.length() == 0
+            ? relativeName
+            : new File(externalizeFileName(packageName), relativeName).getPath();
+        return getFileForOutput(location, name, sibling);
+    }
+
+    private JavaFileObject getFileForOutput(Location location,
+                                            String fileName,
+                                            FileObject sibling)
+        throws IOException
+    {
+        File dir;
+        if (location == CLASS_OUTPUT) {
+            if (getClassOutDir() != null) {
+                dir = getClassOutDir();
+            } else {
+                File siblingDir = null;
+                if (sibling != null && sibling instanceof RegularFileObject) {
+                    siblingDir = ((RegularFileObject)sibling).f.getParentFile();
+                }
+                return new RegularFileObject(new File(siblingDir, baseName(fileName)));
+            }
+        } else if (location == SOURCE_OUTPUT) {
+            dir = (getSourceOutDir() != null ? getSourceOutDir() : getClassOutDir());
+        } else {
+            Iterable<? extends File> path = paths.getPathForLocation(location);
+            dir = null;
+            for (File f: path) {
+                dir = f;
+                break;
+            }
+        }
+
+        File file = (dir == null ? new File(fileName) : new File(dir, fileName));
+        return new RegularFileObject(file);
+
+    }
+
+    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(
+        Iterable<? extends File> files)
+    {
+        ArrayList<RegularFileObject> result;
+        if (files instanceof Collection)
+            result = new ArrayList<RegularFileObject>(((Collection)files).size());
+        else
+            result = new ArrayList<RegularFileObject>();
+        for (File f: files)
+            result.add(new RegularFileObject(nullCheck(f)));
+        return result;
+    }
+
+    public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
+        return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files)));
+    }
+
+    public void setLocation(Location location,
+                            Iterable<? extends File> path)
+        throws IOException
+    {
+        nullCheck(location);
+        paths.lazy();
+
+        final File dir = location.isOutputLocation() ? getOutputDirectory(path) : null;
+
+        if (location == CLASS_OUTPUT)
+            classOutDir = getOutputLocation(dir, D);
+        else if (location == SOURCE_OUTPUT)
+            sourceOutDir = getOutputLocation(dir, S);
+        else
+            paths.setPathForLocation(location, path);
+    }
+    // where
+        private File getOutputDirectory(Iterable<? extends File> path) throws IOException {
+            if (path == null)
+                return null;
+            Iterator<? extends File> pathIter = path.iterator();
+            if (!pathIter.hasNext())
+                throw new IllegalArgumentException("empty path for directory");
+            File dir = pathIter.next();
+            if (pathIter.hasNext())
+                throw new IllegalArgumentException("path too long for directory");
+            if (!dir.exists())
+                throw new FileNotFoundException(dir + ": does not exist");
+            else if (!dir.isDirectory())
+                throw new IOException(dir + ": not a directory");
+            return dir;
+        }
+
+    private File getOutputLocation(File dir, OptionName defaultOptionName) {
+        if (dir != null)
+            return dir;
+        String arg = options.get(defaultOptionName);
+        if (arg == null)
+            return null;
+        return new File(arg);
+    }
+
+    public Iterable<? extends File> getLocation(Location location) {
+        nullCheck(location);
+        paths.lazy();
+        if (location == CLASS_OUTPUT) {
+            return (getClassOutDir() == null ? null : List.of(getClassOutDir()));
+        } else if (location == SOURCE_OUTPUT) {
+            return (getSourceOutDir() == null ? null : List.of(getSourceOutDir()));
+        } else
+            return paths.getPathForLocation(location);
+    }
+
+    private File getClassOutDir() {
+        if (classOutDir == uninited)
+            classOutDir = getOutputLocation(null, D);
+        return classOutDir;
+    }
+
+    private File getSourceOutDir() {
+        if (sourceOutDir == uninited)
+            sourceOutDir = getOutputLocation(null, S);
+        return sourceOutDir;
+    }
+
+    /**
+     * Enforces the specification of a "relative" URI as used in
+     * {@linkplain #getFileForInput(Location,String,URI)
+     * getFileForInput}.  This method must follow the rules defined in
+     * that method, do not make any changes without consulting the
+     * specification.
+     */
+    protected static boolean isRelativeUri(URI uri) {
+        if (uri.isAbsolute())
+            return false;
+        String path = uri.normalize().getPath();
+        if (path.length() == 0 /* isEmpty() is mustang API */)
+            return false;
+        char first = path.charAt(0);
+        return first != '.' && first != '/';
+    }
+
+    /**
+     * Converts a relative file name to a relative URI.  This is
+     * different from File.toURI as this method does not canonicalize
+     * the file before creating the URI.  Furthermore, no schema is
+     * used.
+     * @param file a relative file name
+     * @return a relative URI
+     * @throws IllegalArgumentException if the file name is not
+     * relative according to the definition given in {@link
+     * javax.tools.JavaFileManager#getFileForInput}
+     */
+    public static String getRelativeName(File file) {
+        if (!file.isAbsolute()) {
+            String result = file.getPath().replace(File.separatorChar, '/');
+            if (JavacFileManager.isRelativeUri(URI.create(result))) // FIXME 6419701
+                return result;
+        }
+        throw new IllegalArgumentException("Invalid relative path: " + file);
+    }
+
+    @SuppressWarnings("deprecation") // bug 6410637
+    public static String getJavacFileName(FileObject file) {
+        if (file instanceof BaseFileObject)
+            return ((BaseFileObject)file).getPath();
+        URI uri = file.toUri();
+        String scheme = uri.getScheme();
+        if (scheme == null || scheme.equals("file") || scheme.equals("jar"))
+            return uri.getPath();
+        else
+            return uri.toString();
+    }
+
+    @SuppressWarnings("deprecation") // bug 6410637
+    public static String getJavacBaseFileName(FileObject file) {
+        if (file instanceof BaseFileObject)
+            return ((BaseFileObject)file).getName();
+        URI uri = file.toUri();
+        String scheme = uri.getScheme();
+        if (scheme == null || scheme.equals("file") || scheme.equals("jar")) {
+            String path = uri.getPath();
+            if (path == null)
+                return null;
+            if (scheme != null && scheme.equals("jar"))
+                path = path.substring(path.lastIndexOf('!') + 1);
+            return path.substring(path.lastIndexOf('/') + 1);
+        } else {
+            return uri.toString();
+        }
+    }
+
+    private static <T> T nullCheck(T o) {
+        o.getClass(); // null check
+        return o;
+    }
+
+    private static <T> Iterable<T> nullCheck(Iterable<T> it) {
+        for (T t : it)
+            t.getClass(); // null check
+        return it;
+    }
+
+    /**
+     * A subclass of JavaFileObject representing regular files.
+     */
+    private class RegularFileObject extends BaseFileObject {
+        /** Have the parent directories been created?
+         */
+        private boolean hasParents=false;
+
+        /** The file's name.
+         */
+        private String name;
+
+        /** The underlying file.
+         */
+        final File f;
+
+        public RegularFileObject(File f) {
+            this(f.getName(), f);
+        }
+
+        public RegularFileObject(String name, File f) {
+            if (f.isDirectory())
+                throw new IllegalArgumentException("directories not supported");
+            this.name = name;
+            this.f = f;
+        }
+
+        public InputStream openInputStream() throws IOException {
+            return new FileInputStream(f);
+        }
+
+        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
+            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
+        }
+
+        public OutputStream openOutputStream() throws IOException {
+            ensureParentDirectoriesExist();
+            return new FileOutputStream(f);
+        }
+
+        public Writer openWriter() throws IOException {
+            ensureParentDirectoriesExist();
+            return new OutputStreamWriter(new FileOutputStream(f), getEncodingName());
+        }
+
+        private void ensureParentDirectoriesExist() throws IOException {
+            if (!hasParents) {
+                File parent = f.getParentFile();
+                if (parent != null && !parent.exists()) {
+                    if (!parent.mkdirs()) {
+                        // if the mkdirs failed, it may be because another process concurrently
+                        // created the directory, so check if the directory got created
+                        // anyway before throwing an exception
+                        if (!parent.exists() || !parent.isDirectory())
+                            throw new IOException("could not create parent directories");
+                    }
+                }
+                hasParents = true;
+            }
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getName() {
+            return name;
+        }
+
+        public boolean isNameCompatible(String cn, JavaFileObject.Kind kind) {
+            cn.getClass(); // null check
+            if (kind == Kind.OTHER && getKind() != kind)
+                return false;
+            String n = cn + kind.extension;
+            if (name.equals(n))
+                return true;
+            if (name.equalsIgnoreCase(n)) {
+                try {
+                    // allow for Windows
+                    return (f.getCanonicalFile().getName().equals(n));
+                } catch (IOException e) {
+                }
+            }
+            return false;
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getPath() {
+            return f.getPath();
+        }
+
+        public long getLastModified() {
+            return f.lastModified();
+        }
+
+        public boolean delete() {
+            return f.delete();
+        }
+
+        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            SoftReference<CharBuffer> r = contentCache.get(this);
+            CharBuffer cb = (r == null ? null : r.get());
+            if (cb == null) {
+                InputStream in = new FileInputStream(f);
+                try {
+                    ByteBuffer bb = makeByteBuffer(in);
+                    JavaFileObject prev = log.useSource(this);
+                    try {
+                        cb = decode(bb, ignoreEncodingErrors);
+                    } finally {
+                        log.useSource(prev);
+                    }
+                    byteBufferCache.put(bb); // save for next time
+                    if (!ignoreEncodingErrors)
+                        contentCache.put(this, new SoftReference<CharBuffer>(cb));
+                } finally {
+                    in.close();
+                }
+            }
+            return cb;
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof RegularFileObject))
+                return false;
+            RegularFileObject o = (RegularFileObject) other;
+            try {
+                return f.equals(o.f)
+                    || f.getCanonicalFile().equals(o.f.getCanonicalFile());
+            } catch (IOException e) {
+                return false;
+            }
+        }
+
+        @Override
+        public int hashCode() {
+            return f.hashCode();
+        }
+
+        public URI toUri() {
+            try {
+                // Do no use File.toURI to avoid file system access
+                String path = f.getAbsolutePath().replace(File.separatorChar, '/');
+                return new URI("file://" + path).normalize();
+            } catch (URISyntaxException ex) {
+                return f.toURI();
+            }
+        }
+
+    }
+
+    /**
+     * A subclass of JavaFileObject representing zip entries.
+     */
+    public class ZipFileObject extends BaseFileObject {
+
+        /** The entry's name.
+         */
+        private String name;
+
+        /** The zipfile containing the entry.
+         */
+        ZipFile zdir;
+
+        /** The underlying zip entry object.
+         */
+        ZipEntry entry;
+
+        public ZipFileObject(String name, ZipFile zdir, ZipEntry entry) {
+            this.name = name;
+            this.zdir = zdir;
+            this.entry = entry;
+        }
+
+        public InputStream openInputStream() throws IOException {
+            return zdir.getInputStream(entry);
+        }
+
+        public OutputStream openOutputStream() throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
+            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
+        }
+
+        public Writer openWriter() throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getName() {
+            return name;
+        }
+
+        public boolean isNameCompatible(String cn, JavaFileObject.Kind k) {
+            cn.getClass(); // null check
+            if (k == Kind.OTHER && getKind() != k)
+                return false;
+            return name.equals(cn + k.extension);
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getPath() {
+            return zdir.getName() + "(" + entry + ")";
+        }
+
+        public long getLastModified() {
+            return entry.getTime();
+        }
+
+        public boolean delete() {
+            throw new UnsupportedOperationException();
+        }
+
+        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            SoftReference<CharBuffer> r = contentCache.get(this);
+            CharBuffer cb = (r == null ? null : r.get());
+            if (cb == null) {
+                InputStream in = zdir.getInputStream(entry);
+                try {
+                    ByteBuffer bb = makeByteBuffer(in);
+                    JavaFileObject prev = log.useSource(this);
+                    try {
+                        cb = decode(bb, ignoreEncodingErrors);
+                    } finally {
+                        log.useSource(prev);
+                    }
+                    byteBufferCache.put(bb); // save for next time
+                    if (!ignoreEncodingErrors)
+                        contentCache.put(this, new SoftReference<CharBuffer>(cb));
+                } finally {
+                    in.close();
+                }
+            }
+            return cb;
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof ZipFileObject))
+                return false;
+            ZipFileObject o = (ZipFileObject) other;
+            return zdir.equals(o.zdir) || name.equals(o.name);
+        }
+
+        @Override
+        public int hashCode() {
+            return zdir.hashCode() + name.hashCode();
+        }
+
+        public String getZipName() {
+            return zdir.getName();
+        }
+
+        public String getZipEntryName() {
+            return entry.getName();
+        }
+
+        public URI toUri() {
+            String zipName = new File(getZipName()).toURI().normalize().getPath();
+            String entryName = getZipEntryName();
+            return URI.create("jar:" + zipName + "!" + entryName);
+        }
+
+    }
+
+    /**
+     * A subclass of JavaFileObject representing zip entries using the com.sun.tools.javac.zip.ZipFileIndex implementation.
+     */
+    public class ZipFileIndexFileObject extends BaseFileObject {
+
+            /** The entry's name.
+         */
+        private String name;
+
+        /** The zipfile containing the entry.
+         */
+        ZipFileIndex zfIndex;
+
+        /** The underlying zip entry object.
+         */
+        ZipFileIndexEntry entry;
+
+        /** The InputStream for this zip entry (file.)
+         */
+        InputStream inputStream = null;
+
+        /** The name of the zip file where this entry resides.
+         */
+        String zipName;
+
+        JavacFileManager defFileManager = null;
+
+        public ZipFileIndexFileObject(JavacFileManager fileManager, ZipFileIndex zfIndex, ZipFileIndexEntry entry, String zipFileName) {
+            super();
+            this.name = entry.getFileName();
+            this.zfIndex = zfIndex;
+            this.entry = entry;
+            this.zipName = zipFileName;
+            defFileManager = fileManager;
+        }
+
+        public InputStream openInputStream() throws IOException {
+
+            if (inputStream == null) {
+                inputStream = new ByteArrayInputStream(read());
+            }
+            return inputStream;
+        }
+
+        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
+            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
+        }
+
+        public OutputStream openOutputStream() throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        public Writer openWriter() throws IOException {
+            throw new UnsupportedOperationException();
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getName() {
+            return name;
+        }
+
+        public boolean isNameCompatible(String cn, JavaFileObject.Kind k) {
+            cn.getClass(); // null check
+            if (k == Kind.OTHER && getKind() != k)
+                return false;
+            return name.equals(cn + k.extension);
+        }
+
+        /** @deprecated see bug 6410637 */
+        @Deprecated
+        public String getPath() {
+            return zipName + "(" + entry.getName() + ")";
+        }
+
+        public long getLastModified() {
+            return entry.getLastModified();
+        }
+
+        public boolean delete() {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean equals(Object other) {
+            if (!(other instanceof ZipFileIndexFileObject))
+                return false;
+            ZipFileIndexFileObject o = (ZipFileIndexFileObject) other;
+            return entry.equals(o.entry);
+        }
+
+        @Override
+        public int hashCode() {
+            return zipName.hashCode() + (name.hashCode() << 10);
+        }
+
+        public String getZipName() {
+            return zipName;
+        }
+
+        public String getZipEntryName() {
+            return entry.getName();
+        }
+
+        public URI toUri() {
+            String zipName = new File(getZipName()).toURI().normalize().getPath();
+            String entryName = getZipEntryName();
+            if (File.separatorChar != '/') {
+                entryName = entryName.replace(File.separatorChar, '/');
+            }
+            return URI.create("jar:" + zipName + "!" + entryName);
+        }
+
+        private byte[] read() throws IOException {
+            if (entry == null) {
+                entry = zfIndex.getZipIndexEntry(name);
+                if (entry == null)
+                  throw new FileNotFoundException();
+            }
+            return zfIndex.read(entry);
+        }
+
+        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
+            SoftReference<CharBuffer> r = defFileManager.contentCache.get(this);
+            CharBuffer cb = (r == null ? null : r.get());
+            if (cb == null) {
+                InputStream in = new ByteArrayInputStream(zfIndex.read(entry));
+                try {
+                    ByteBuffer bb = makeByteBuffer(in);
+                    JavaFileObject prev = log.useSource(this);
+                    try {
+                        cb = decode(bb, ignoreEncodingErrors);
+                    } finally {
+                        log.useSource(prev);
+                    }
+                    byteBufferCache.put(bb); // save for next time
+                    if (!ignoreEncodingErrors)
+                        defFileManager.contentCache.put(this, new SoftReference<CharBuffer>(cb));
+                } finally {
+                    in.close();
+                }
+            }
+            return cb;
+        }
+    }
+
+    public class ZipFileIndexArchive implements Archive {
+        private final ZipFileIndex zfIndex;
+        private JavacFileManager fileManager;
+
+        public ZipFileIndexArchive(JavacFileManager fileManager, ZipFileIndex zdir) throws IOException {
+            this.fileManager = fileManager;
+            this.zfIndex = zdir;
+        }
+
+        public boolean contains(String name) {
+            return zfIndex.contains(name);
+        }
+
+        public com.sun.tools.javac.util.List<String> getFiles(String subdirectory) {
+              return zfIndex.getFiles(((subdirectory.endsWith("/") || subdirectory.endsWith("\\"))? subdirectory.substring(0, subdirectory.length() - 1) : subdirectory));
+        }
+
+        public JavaFileObject getFileObject(String subdirectory, String file) {
+            String fullZipFileName = subdirectory + file;
+            ZipFileIndexEntry entry = zfIndex.getZipIndexEntry(fullZipFileName);
+            JavaFileObject ret = new ZipFileIndexFileObject(fileManager, zfIndex, entry, zfIndex.getZipFile().getPath());
+            return ret;
+        }
+
+        public Set<String> getSubdirectories() {
+            return zfIndex.getAllDirectories();
+        }
+
+        public void close() throws IOException {
+            zfIndex.close();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/Old199.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,54 @@
+/*
+ * 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
+ * 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.tools.javac.file;
+
+import javax.tools.FileObject;
+
+/**
+ * Provides an easy migration to JSR 199 v3.3.  The class is
+ * deprecated as we should remove it as soon as possible.
+ *
+ * <p><b>This is NOT part of any API supported by Sun Microsystems.
+ * If you write code that depends on this, you do so at your own
+ * risk.  This code and its internal interfaces are subject to change
+ * or deletion without notice.</b></p>
+ *
+ * @author Peter von der Ah\u00e9
+ */
+@Deprecated
+public class Old199 {
+
+    private Old199() {}
+
+    public static String getPath(FileObject jfo) {
+        return JavacFileManager.getJavacFileName(jfo);
+    }
+
+    public static String getName(FileObject jfo) {
+        return JavacFileManager.getJavacBaseFileName(jfo);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,577 @@
+/*
+ * 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.  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.tools.javac.file;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.jar.Attributes;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+import java.util.zip.ZipFile;
+import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import javax.tools.JavaFileManager.Location;
+
+import com.sun.tools.javac.code.Lint;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Options;
+
+import static javax.tools.StandardLocation.*;
+import static com.sun.tools.javac.main.OptionName.*;
+
+/** This class converts command line arguments, environment variables
+ *  and system properties (in File.pathSeparator-separated String form)
+ *  into a boot class path, user class path, and source path (in
+ *  Collection<String> form).
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Paths {
+
+    /** The context key for the todo list */
+    protected static final Context.Key<Paths> pathsKey =
+        new Context.Key<Paths>();
+
+    /** Get the Paths instance for this context.
+     *  @param context the context
+     *  @return the Paths instance for this context
+     */
+    public static Paths instance(Context context) {
+        Paths instance = context.get(pathsKey);
+        if (instance == null)
+            instance = new Paths(context);
+        return instance;
+    }
+
+    /** The log to use for warning output */
+    private Log log;
+
+    /** Collection of command-line options */
+    private Options options;
+
+    /** Handler for -Xlint options */
+    private Lint lint;
+
+    private static boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this.
+    private static Map<File, PathEntry> pathExistanceCache = new ConcurrentHashMap<File, PathEntry>();
+    private static Map<File, java.util.List<File>> manifestEntries = new ConcurrentHashMap<File, java.util.List<File>>();
+    private static Map<File, Boolean> isDirectory = new ConcurrentHashMap<File, Boolean>();
+    private static Lock lock = new ReentrantLock();
+
+    public static void clearPathExistanceCache() {
+            pathExistanceCache.clear();
+    }
+
+    static class PathEntry {
+        boolean exists = false;
+        boolean isFile = false;
+        File cannonicalPath = null;
+    }
+
+    protected Paths(Context context) {
+        context.put(pathsKey, this);
+        pathsForLocation = new HashMap<Location,Path>(16);
+        setContext(context);
+    }
+
+    void setContext(Context context) {
+        log = Log.instance(context);
+        options = Options.instance(context);
+        lint = Lint.instance(context);
+    }
+
+    /** Whether to warn about non-existent path elements */
+    private boolean warn;
+
+    private Map<Location, Path> pathsForLocation;
+
+    private boolean inited = false; // TODO? caching bad?
+
+    /**
+     * rt.jar as found on the default bootclass path.  If the user specified a
+     * bootclasspath, null is used.
+     */
+    private File bootClassPathRtJar = null;
+
+    Path getPathForLocation(Location location) {
+        Path path = pathsForLocation.get(location);
+        if (path == null)
+            setPathForLocation(location, null);
+        return pathsForLocation.get(location);
+    }
+
+    void setPathForLocation(Location location, Iterable<? extends File> path) {
+        // TODO? if (inited) throw new IllegalStateException
+        // TODO: otherwise reset sourceSearchPath, classSearchPath as needed
+        Path p;
+        if (path == null) {
+            if (location == CLASS_PATH)
+                p = computeUserClassPath();
+            else if (location == PLATFORM_CLASS_PATH)
+                p = computeBootClassPath();
+            else if (location == ANNOTATION_PROCESSOR_PATH)
+                p = computeAnnotationProcessorPath();
+            else if (location == SOURCE_PATH)
+                p = computeSourcePath();
+            else
+                // no defaults for other paths
+                p = null;
+        } else {
+            p = new Path();
+            for (File f: path)
+                p.addFile(f, warn); // TODO: is use of warn appropriate?
+        }
+        pathsForLocation.put(location, p);
+    }
+
+    protected void lazy() {
+        if (!inited) {
+            warn = lint.isEnabled(Lint.LintCategory.PATH);
+
+            pathsForLocation.put(PLATFORM_CLASS_PATH, computeBootClassPath());
+            pathsForLocation.put(CLASS_PATH, computeUserClassPath());
+            pathsForLocation.put(SOURCE_PATH, computeSourcePath());
+
+            inited = true;
+        }
+    }
+
+    public Collection<File> bootClassPath() {
+        lazy();
+        return Collections.unmodifiableCollection(getPathForLocation(PLATFORM_CLASS_PATH));
+    }
+    public Collection<File> userClassPath() {
+        lazy();
+        return Collections.unmodifiableCollection(getPathForLocation(CLASS_PATH));
+    }
+    public Collection<File> sourcePath() {
+        lazy();
+        Path p = getPathForLocation(SOURCE_PATH);
+        return p == null || p.size() == 0
+            ? null
+            : Collections.unmodifiableCollection(p);
+    }
+
+    boolean isBootClassPathRtJar(File file) {
+        return file.equals(bootClassPathRtJar);
+    }
+
+    private static class PathIterator implements Iterable<String> {
+        private int pos = 0;
+        private final String path;
+        private final String emptyPathDefault;
+
+        public PathIterator(String path, String emptyPathDefault) {
+            this.path = path;
+            this.emptyPathDefault = emptyPathDefault;
+        }
+        public PathIterator(String path) { this(path, null); }
+        public Iterator<String> iterator() {
+            return new Iterator<String>() {
+                public boolean hasNext() {
+                    return pos <= path.length();
+                }
+                public String next() {
+                    int beg = pos;
+                    int end = path.indexOf(File.pathSeparator, beg);
+                    if (end == -1)
+                        end = path.length();
+                    pos = end + 1;
+
+                    if (beg == end && emptyPathDefault != null)
+                        return emptyPathDefault;
+                    else
+                        return path.substring(beg, end);
+                }
+                public void remove() {
+                    throw new UnsupportedOperationException();
+                }
+            };
+        }
+    }
+
+    private class Path extends LinkedHashSet<File> {
+        private static final long serialVersionUID = 0;
+
+        private boolean expandJarClassPaths = false;
+        private Set<File> canonicalValues = new HashSet<File>();
+
+        public Path expandJarClassPaths(boolean x) {
+            expandJarClassPaths = x;
+            return this;
+        }
+
+        /** What to use when path element is the empty string */
+        private String emptyPathDefault = null;
+
+        public Path emptyPathDefault(String x) {
+            emptyPathDefault = x;
+            return this;
+        }
+
+        public Path() { super(); }
+
+        public Path addDirectories(String dirs, boolean warn) {
+            if (dirs != null)
+                for (String dir : new PathIterator(dirs))
+                    addDirectory(dir, warn);
+            return this;
+        }
+
+        public Path addDirectories(String dirs) {
+            return addDirectories(dirs, warn);
+        }
+
+        private void addDirectory(String dir, boolean warn) {
+            if (! new File(dir).isDirectory()) {
+                if (warn)
+                    log.warning("dir.path.element.not.found", dir);
+                return;
+            }
+
+            File[] files = new File(dir).listFiles();
+            if (files == null)
+                return;
+
+            for (File direntry : files) {
+                if (isArchive(direntry))
+                    addFile(direntry, warn);
+            }
+        }
+
+        public Path addFiles(String files, boolean warn) {
+            if (files != null)
+                for (String file : new PathIterator(files, emptyPathDefault))
+                    addFile(file, warn);
+            return this;
+        }
+
+        public Path addFiles(String files) {
+            return addFiles(files, warn);
+        }
+
+        public Path addFile(String file, boolean warn) {
+            addFile(new File(file), warn);
+            return this;
+        }
+
+        public void addFile(File file, boolean warn) {
+            boolean foundInCache = false;
+            PathEntry pe = null;
+            if (!NON_BATCH_MODE) {
+                    pe = pathExistanceCache.get(file);
+                    if (pe != null) {
+                        foundInCache = true;
+                    }
+                    else {
+                        pe = new PathEntry();
+                    }
+            }
+            else {
+                pe = new PathEntry();
+            }
+
+            File canonFile;
+            try {
+                if (!foundInCache) {
+                    pe.cannonicalPath = file.getCanonicalFile();
+                }
+                else {
+                   canonFile = pe.cannonicalPath;
+                }
+            } catch (IOException e) {
+                pe.cannonicalPath = canonFile = file;
+            }
+
+            if (contains(file) || canonicalValues.contains(pe.cannonicalPath)) {
+                /* Discard duplicates and avoid infinite recursion */
+                return;
+            }
+
+            if (!foundInCache) {
+                pe.exists = file.exists();
+                pe.isFile = file.isFile();
+                if (!NON_BATCH_MODE) {
+                    pathExistanceCache.put(file, pe);
+                }
+            }
+
+            if (! pe.exists) {
+                /* No such file or directory exists */
+                if (warn)
+                    log.warning("path.element.not.found", file);
+            } else if (pe.isFile) {
+                /* File is an ordinary file. */
+                if (!isArchive(file)) {
+                    /* Not a recognized extension; open it to see if
+                     it looks like a valid zip file. */
+                    try {
+                        ZipFile z = new ZipFile(file);
+                        z.close();
+                        if (warn)
+                            log.warning("unexpected.archive.file", file);
+                    } catch (IOException e) {
+                        // FIXME: include e.getLocalizedMessage in warning
+                        if (warn)
+                            log.warning("invalid.archive.file", file);
+                        return;
+                    }
+                }
+            }
+
+            /* Now what we have left is either a directory or a file name
+               confirming to archive naming convention */
+            super.add(file);
+            canonicalValues.add(pe.cannonicalPath);
+
+            if (expandJarClassPaths && file.exists() && file.isFile())
+                addJarClassPath(file, warn);
+        }
+
+        // Adds referenced classpath elements from a jar's Class-Path
+        // Manifest entry.  In some future release, we may want to
+        // update this code to recognize URLs rather than simple
+        // filenames, but if we do, we should redo all path-related code.
+        private void addJarClassPath(File jarFile, boolean warn) {
+            try {
+                java.util.List<File> manifestsList = manifestEntries.get(jarFile);
+                if (!NON_BATCH_MODE) {
+                    lock.lock();
+                    try {
+                        if (manifestsList != null) {
+                            for (File entr : manifestsList) {
+                                addFile(entr, warn);
+                            }
+                            return;
+                        }
+                    }
+                    finally {
+                        lock.unlock();
+                    }
+                }
+
+                if (!NON_BATCH_MODE) {
+                    manifestsList = new ArrayList<File>();
+                    manifestEntries.put(jarFile, manifestsList);
+                }
+
+                String jarParent = jarFile.getParent();
+                JarFile jar = new JarFile(jarFile);
+
+                try {
+                    Manifest man = jar.getManifest();
+                    if (man == null) return;
+
+                    Attributes attr = man.getMainAttributes();
+                    if (attr == null) return;
+
+                    String path = attr.getValue(Attributes.Name.CLASS_PATH);
+                    if (path == null) return;
+
+                    for (StringTokenizer st = new StringTokenizer(path);
+                         st.hasMoreTokens();) {
+                        String elt = st.nextToken();
+                        File f = (jarParent == null ? new File(elt) : new File(jarParent, elt));
+                        addFile(f, warn);
+
+                        if (!NON_BATCH_MODE) {
+                            lock.lock();
+                            try {
+                                manifestsList.add(f);
+                            }
+                            finally {
+                                lock.unlock();
+                            }
+                        }
+                    }
+                } finally {
+                    jar.close();
+                }
+            } catch (IOException e) {
+                log.error("error.reading.file", jarFile, e.getLocalizedMessage());
+            }
+        }
+    }
+
+    private Path computeBootClassPath() {
+        bootClassPathRtJar = null;
+        String optionValue;
+        Path path = new Path();
+
+        path.addFiles(options.get(XBOOTCLASSPATH_PREPEND));
+
+        if ((optionValue = options.get(ENDORSEDDIRS)) != null)
+            path.addDirectories(optionValue);
+        else
+            path.addDirectories(System.getProperty("java.endorsed.dirs"), false);
+
+        if ((optionValue = options.get(BOOTCLASSPATH)) != null) {
+            path.addFiles(optionValue);
+        } else {
+            // Standard system classes for this compiler's release.
+            String files = System.getProperty("sun.boot.class.path");
+            path.addFiles(files, false);
+            File rt_jar = new File("rt.jar");
+            for (String file : new PathIterator(files, null)) {
+                File f = new File(file);
+                if (new File(f.getName()).equals(rt_jar))
+                    bootClassPathRtJar = f;
+            }
+        }
+
+        path.addFiles(options.get(XBOOTCLASSPATH_APPEND));
+
+        // Strictly speaking, standard extensions are not bootstrap
+        // classes, but we treat them identically, so we'll pretend
+        // that they are.
+        if ((optionValue = options.get(EXTDIRS)) != null)
+            path.addDirectories(optionValue);
+        else
+            path.addDirectories(System.getProperty("java.ext.dirs"), false);
+
+        return path;
+    }
+
+    private Path computeUserClassPath() {
+        String cp = options.get(CLASSPATH);
+
+        // CLASSPATH environment variable when run from `javac'.
+        if (cp == null) cp = System.getProperty("env.class.path");
+
+        // If invoked via a java VM (not the javac launcher), use the
+        // platform class path
+        if (cp == null && System.getProperty("application.home") == null)
+            cp = System.getProperty("java.class.path");
+
+        // Default to current working directory.
+        if (cp == null) cp = ".";
+
+        return new Path()
+            .expandJarClassPaths(true) // Only search user jars for Class-Paths
+            .emptyPathDefault(".")     // Empty path elt ==> current directory
+            .addFiles(cp);
+    }
+
+    private Path computeSourcePath() {
+        String sourcePathArg = options.get(SOURCEPATH);
+        if (sourcePathArg == null)
+            return null;
+
+        return new Path().addFiles(sourcePathArg);
+    }
+
+    private Path computeAnnotationProcessorPath() {
+        String processorPathArg = options.get(PROCESSORPATH);
+        if (processorPathArg == null)
+            return null;
+
+        return new Path().addFiles(processorPathArg);
+    }
+
+    /** The actual effective locations searched for sources */
+    private Path sourceSearchPath;
+
+    public Collection<File> sourceSearchPath() {
+        if (sourceSearchPath == null) {
+            lazy();
+            Path sourcePath = getPathForLocation(SOURCE_PATH);
+            Path userClassPath = getPathForLocation(CLASS_PATH);
+            sourceSearchPath = sourcePath != null ? sourcePath : userClassPath;
+        }
+        return Collections.unmodifiableCollection(sourceSearchPath);
+    }
+
+    /** The actual effective locations searched for classes */
+    private Path classSearchPath;
+
+    public Collection<File> classSearchPath() {
+        if (classSearchPath == null) {
+            lazy();
+            Path bootClassPath = getPathForLocation(PLATFORM_CLASS_PATH);
+            Path userClassPath = getPathForLocation(CLASS_PATH);
+            classSearchPath = new Path();
+            classSearchPath.addAll(bootClassPath);
+            classSearchPath.addAll(userClassPath);
+        }
+        return Collections.unmodifiableCollection(classSearchPath);
+    }
+
+    /** The actual effective locations for non-source, non-class files */
+    private Path otherSearchPath;
+
+    Collection<File> otherSearchPath() {
+        if (otherSearchPath == null) {
+            lazy();
+            Path userClassPath = getPathForLocation(CLASS_PATH);
+            Path sourcePath = getPathForLocation(SOURCE_PATH);
+            if (sourcePath == null)
+                otherSearchPath = userClassPath;
+            else {
+                otherSearchPath = new Path();
+                otherSearchPath.addAll(userClassPath);
+                otherSearchPath.addAll(sourcePath);
+            }
+        }
+        return Collections.unmodifiableCollection(otherSearchPath);
+    }
+
+    /** Is this the name of an archive file? */
+    private static boolean isArchive(File file) {
+        String n = file.getName().toLowerCase();
+        boolean isFile = false;
+        if (!NON_BATCH_MODE) {
+            Boolean isf = isDirectory.get(file);
+            if (isf == null) {
+                isFile = file.isFile();
+                isDirectory.put(file, isFile);
+            }
+            else {
+                isFile = isf;
+            }
+        }
+        else {
+            isFile = file.isFile();
+        }
+
+        return isFile
+            && (n.endsWith(".jar") || n.endsWith(".zip"));
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,1248 @@
+/*
+ * 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 com.sun.tools.javac.file;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.zip.DataFormatException;
+import java.util.zip.Inflater;
+import java.util.zip.ZipException;
+
+/** This class implements building of index of a zip archive and access to it's context.
+ *  It also uses prebuild index if available. It supports invocations where it will
+ *  serialize an optimized zip index file to disk.
+ *
+ *  In oreder to use secondary index file make sure the option "usezipindex" is in the Options object,
+ *  when JavacFileManager is invoked. (You can pass "-XDusezipindex" on the command line.
+ *
+ *  Location where to look for/generate optimized zip index files can be provided using
+ *  "-XDcachezipindexdir=<directory>". If this flag is not provided, the dfault location is
+ *  the value of the "java.io.tmpdir" system property.
+ *
+ *  If key "-XDwritezipindexfiles" is specified, there will be new optimized index file
+ *  created for each archive, used by the compiler for compilation, at location,
+ *  specified by "cachezipindexdir" option.
+ *
+ * If nonBatchMode option is specified (-XDnonBatchMode) the compiler will use timestamp
+ * checking to reindex the zip files if it is needed. In batch mode the timestamps are not checked
+ * and the compiler uses the cached indexes.
+ */
+public class ZipFileIndex {
+    private static final String MIN_CHAR = String.valueOf(Character.MIN_VALUE);
+    private static final String MAX_CHAR = String.valueOf(Character.MAX_VALUE);
+
+    public final static long NOT_MODIFIED = Long.MIN_VALUE;
+
+    private static Map<File, ZipFileIndex> zipFileIndexCache = new HashMap<File, ZipFileIndex>();
+    private static ReentrantLock lock = new ReentrantLock();
+
+    private static boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this.
+
+    private Map<String, DirectoryEntry> directories = Collections.<String, DirectoryEntry>emptyMap();
+    private Set<String> allDirs = Collections.<String>emptySet();
+
+    // ZipFileIndex data entries
+    private File zipFile;
+    private long zipFileLastModified = NOT_MODIFIED;
+    private RandomAccessFile zipRandomFile;
+    private ZipFileIndexEntry[] entries;
+
+    private boolean readFromIndex = false;
+    private File zipIndexFile = null;
+    private boolean triedToReadIndex = false;
+    private int symbolFilePrefixLength = 0;
+    private boolean hasPopulatedData = false;
+    private long lastReferenceTimeStamp = NOT_MODIFIED;
+
+    private boolean usePreindexedCache = false;
+    private String preindexedCacheLocation = null;
+
+    private boolean writeIndex = false;
+
+    /**
+     * Returns a list of all ZipFileIndex entries
+     *
+     * @return A list of ZipFileIndex entries, or an empty list
+     */
+    public static List<ZipFileIndex> getZipFileIndexes() {
+        return getZipFileIndexes(false);
+    }
+
+    /**
+     * Returns a list of all ZipFileIndex entries
+     *
+     * @param openedOnly If true it returns a list of only opened ZipFileIndex entries, otherwise
+     *                   all ZipFileEntry(s) are included into the list.
+     * @return A list of ZipFileIndex entries, or an empty list
+     */
+    public static List<ZipFileIndex> getZipFileIndexes(boolean openedOnly) {
+        List<ZipFileIndex> zipFileIndexes = new ArrayList<ZipFileIndex>();
+        lock.lock();
+        try {
+            zipFileIndexes.addAll(zipFileIndexCache.values());
+
+            if (openedOnly) {
+                for(ZipFileIndex elem : zipFileIndexes) {
+                    if (!elem.isOpen()) {
+                        zipFileIndexes.remove(elem);
+                    }
+                }
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+        return zipFileIndexes;
+    }
+
+    public boolean isOpen() {
+        lock.lock();
+        try {
+            return zipRandomFile != null;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public static ZipFileIndex getZipFileIndex(File zipFile, int symbolFilePrefixLen, boolean useCache, String cacheLocation, boolean writeIndex) throws IOException {
+        ZipFileIndex zi = null;
+        lock.lock();
+        try {
+            zi = getExistingZipIndex(zipFile);
+
+            if (zi == null || (zi != null && zipFile.lastModified() != zi.zipFileLastModified)) {
+                zi = new ZipFileIndex(zipFile, symbolFilePrefixLen, writeIndex,
+                        useCache, cacheLocation);
+                zipFileIndexCache.put(zipFile, zi);
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+        return zi;
+    }
+
+    public static ZipFileIndex getExistingZipIndex(File zipFile) {
+        lock.lock();
+        try {
+            return zipFileIndexCache.get(zipFile);
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public static void clearCache() {
+        lock.lock();
+        try {
+            zipFileIndexCache.clear();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public static void clearCache(long timeNotUsed) {
+        lock.lock();
+        try {
+            Iterator<File> cachedFileIterator = zipFileIndexCache.keySet().iterator();
+            while (cachedFileIterator.hasNext()) {
+                File cachedFile = cachedFileIterator.next();
+                ZipFileIndex cachedZipIndex = zipFileIndexCache.get(cachedFile);
+                if (cachedZipIndex != null) {
+                    long timeToTest = cachedZipIndex.lastReferenceTimeStamp + timeNotUsed;
+                    if (timeToTest < cachedZipIndex.lastReferenceTimeStamp || // Overflow...
+                            System.currentTimeMillis() > timeToTest) {
+                        zipFileIndexCache.remove(cachedFile);
+                    }
+                }
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public static void removeFromCache(File file) {
+        lock.lock();
+        try {
+            zipFileIndexCache.remove(file);
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    /** Sets already opened list of ZipFileIndexes from an outside client
+      * of the compiler. This functionality should be used in a non-batch clients of the compiler.
+      */
+    public static void setOpenedIndexes(List<ZipFileIndex>indexes) throws IllegalStateException {
+        lock.lock();
+        try {
+            if (zipFileIndexCache.isEmpty()) {
+                throw new IllegalStateException("Setting opened indexes should be called only when the ZipFileCache is empty. Call JavacFileManager.flush() before calling this method.");
+            }
+
+            for (ZipFileIndex zfi : indexes) {
+                zipFileIndexCache.put(zfi.zipFile, zfi);
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    private ZipFileIndex(File zipFile, int symbolFilePrefixLen, boolean writeIndex,
+            boolean useCache, String cacheLocation) throws IOException {
+        this.zipFile = zipFile;
+        this.symbolFilePrefixLength = symbolFilePrefixLen;
+        this.writeIndex = writeIndex;
+        this.usePreindexedCache = useCache;
+        this.preindexedCacheLocation = cacheLocation;
+
+        if (zipFile != null) {
+            this.zipFileLastModified = zipFile.lastModified();
+        }
+
+        // Validate integrity of the zip file
+        checkIndex();
+    }
+
+    public String toString() {
+        return "ZipFileIndex of file:(" + zipFile + ")";
+    }
+
+    // Just in case...
+    protected void finalize() {
+        closeFile();
+    }
+
+    private boolean isUpToDate() {
+        if (zipFile != null &&
+                ((!NON_BATCH_MODE) || zipFileLastModified == zipFile.lastModified()) &&
+                hasPopulatedData) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Here we need to make sure that the ZipFileIndex is valid. Check the timestamp of the file and
+     * if its the same as the one at the time the index was build we don't need to reopen anything.
+     */
+    private void checkIndex() throws IOException {
+        boolean isUpToDate = true;
+        if (!isUpToDate()) {
+            closeFile();
+            isUpToDate = false;
+        }
+
+        if (zipRandomFile != null || isUpToDate) {
+            lastReferenceTimeStamp = System.currentTimeMillis();
+            return;
+        }
+
+        hasPopulatedData = true;
+
+        if (readIndex()) {
+            lastReferenceTimeStamp = System.currentTimeMillis();
+            return;
+        }
+
+        directories = Collections.<String, DirectoryEntry>emptyMap();
+        allDirs = Collections.<String>emptySet();
+
+        try {
+            openFile();
+            long totalLength = zipRandomFile.length();
+            ZipDirectory directory = new ZipDirectory(zipRandomFile, 0L, totalLength, this);
+            directory.buildIndex();
+        } finally {
+            if (zipRandomFile != null) {
+                closeFile();
+            }
+        }
+
+        lastReferenceTimeStamp = System.currentTimeMillis();
+    }
+
+    private void openFile() throws FileNotFoundException {
+        if (zipRandomFile == null && zipFile != null) {
+            zipRandomFile = new RandomAccessFile(zipFile, "r");
+        }
+    }
+
+    private void cleanupState() {
+        // Make sure there is a valid but empty index if the file doesn't exist
+        entries = ZipFileIndexEntry.EMPTY_ARRAY;
+        directories = Collections.<String, DirectoryEntry>emptyMap();
+        zipFileLastModified = NOT_MODIFIED;
+        allDirs = Collections.<String>emptySet();
+    }
+
+    public void close() {
+        lock.lock();
+        try {
+            writeIndex();
+            closeFile();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    private void closeFile() {
+        if (zipRandomFile != null) {
+            try {
+                zipRandomFile.close();
+            } catch (IOException ex) {
+            }
+            zipRandomFile = null;
+        }
+    }
+
+    /**
+     * Returns the ZipFileIndexEntry for an absolute path, if there is one.
+     */
+    public ZipFileIndexEntry getZipIndexEntry(String path) {
+        if (File.separatorChar != '/') {
+            path = path.replace('/', File.separatorChar);
+        }
+        lock.lock();
+        try {
+            checkIndex();
+            String lookFor = "";
+            int lastSepIndex = path.lastIndexOf(File.separatorChar);
+            boolean noSeparator = false;
+            if (lastSepIndex == -1) {
+                noSeparator = true;
+            }
+
+            DirectoryEntry de = directories.get(noSeparator ? "" : path.substring(0, lastSepIndex));
+
+            lookFor = path.substring(noSeparator ? 0 : lastSepIndex + 1);
+
+            return de == null ? null : de.getEntry(lookFor);
+        }
+        catch (IOException e) {
+            return null;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    /**
+     * Returns a javac List of filenames within an absolute path in the ZipFileIndex.
+     */
+    public com.sun.tools.javac.util.List<String> getFiles(String path) {
+        if (File.separatorChar != '/') {
+            path = path.replace('/', File.separatorChar);
+        }
+
+        lock.lock();
+        try {
+            checkIndex();
+
+            DirectoryEntry de = directories.get(path);
+            com.sun.tools.javac.util.List<String> ret = de == null ? null : de.getFiles();
+
+            if (ret == null) {
+                return com.sun.tools.javac.util.List.<String>nil();
+            }
+            return ret;
+        }
+        catch (IOException e) {
+            return com.sun.tools.javac.util.List.<String>nil();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public List<String> getAllDirectories(String path) {
+
+        if (File.separatorChar != '/') {
+            path = path.replace('/', File.separatorChar);
+        }
+
+        lock.lock();
+        try {
+            checkIndex();
+            path = path.intern();
+
+            DirectoryEntry de = directories.get(path);
+            com.sun.tools.javac.util.List<String> ret = de == null ? null : de.getDirectories();
+
+            if (ret == null) {
+                return com.sun.tools.javac.util.List.<String>nil();
+            }
+
+            return ret;
+        }
+        catch (IOException e) {
+            return com.sun.tools.javac.util.List.<String>nil();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public Set<String> getAllDirectories() {
+        lock.lock();
+        try {
+            checkIndex();
+            if (allDirs == Collections.EMPTY_SET) {
+                Set<String> alldirs = new HashSet<String>();
+                Iterator<String> dirsIter = directories.keySet().iterator();
+                while (dirsIter.hasNext()) {
+                    alldirs.add(new String(dirsIter.next()));
+                }
+
+                allDirs = alldirs;
+            }
+
+            return allDirs;
+        }
+        catch (IOException e) {
+            return Collections.<String>emptySet();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    /**
+     * Tests if a specific path exists in the zip.  This method will return true
+     * for file entries and directories.
+     *
+     * @param path A path within the zip.
+     * @return True if the path is a file or dir, false otherwise.
+     */
+    public boolean contains(String path) {
+        lock.lock();
+        try {
+            checkIndex();
+            return getZipIndexEntry(path) != null;
+        }
+        catch (IOException e) {
+            return false;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public boolean isDirectory(String path) throws IOException {
+        lock.lock();
+        try {
+            // The top level in a zip file is always a directory.
+            if (path.length() == 0) {
+                lastReferenceTimeStamp = System.currentTimeMillis();
+                return true;
+            }
+
+            if (File.separatorChar != '/')
+                path = path.replace('/', File.separatorChar);
+            checkIndex();
+            return directories.get(path) != null;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public long getLastModified(String path) throws IOException {
+        lock.lock();
+        try {
+            ZipFileIndexEntry entry = getZipIndexEntry(path);
+            if (entry == null)
+                throw new FileNotFoundException();
+            return entry.getLastModified();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public int length(String path) throws IOException {
+        lock.lock();
+        try {
+            ZipFileIndexEntry entry = getZipIndexEntry(path);
+            if (entry == null)
+                throw new FileNotFoundException();
+
+            if (entry.isDir) {
+                return 0;
+            }
+
+            byte[] header = getHeader(entry);
+            // entry is not compressed?
+            if (get2ByteLittleEndian(header, 8) == 0) {
+                return entry.compressedSize;
+            } else {
+                return entry.size;
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public byte[] read(String path) throws IOException {
+        lock.lock();
+        try {
+            ZipFileIndexEntry entry = getZipIndexEntry(path);
+            if (entry == null)
+                throw new FileNotFoundException(MessageFormat.format("Path not found in ZIP: {0}", path));
+            return read(entry);
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public byte[] read(ZipFileIndexEntry entry) throws IOException {
+        lock.lock();
+        try {
+            openFile();
+            byte[] result = readBytes(entry);
+            closeFile();
+            return result;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public int read(String path, byte[] buffer) throws IOException {
+        lock.lock();
+        try {
+            ZipFileIndexEntry entry = getZipIndexEntry(path);
+            if (entry == null)
+                throw new FileNotFoundException();
+            return read(entry, buffer);
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    public int read(ZipFileIndexEntry entry, byte[] buffer)
+            throws IOException {
+        lock.lock();
+        try {
+            int result = readBytes(entry, buffer);
+            return result;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    private byte[] readBytes(ZipFileIndexEntry entry) throws IOException {
+        byte[] header = getHeader(entry);
+        int csize = entry.compressedSize;
+        byte[] cbuf = new byte[csize];
+        zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
+        zipRandomFile.readFully(cbuf, 0, csize);
+
+        // is this compressed - offset 8 in the ZipEntry header
+        if (get2ByteLittleEndian(header, 8) == 0)
+            return cbuf;
+
+        int size = entry.size;
+        byte[] buf = new byte[size];
+        if (inflate(cbuf, buf) != size)
+            throw new ZipException("corrupted zip file");
+
+        return buf;
+    }
+
+    /**
+     *
+     */
+    private int readBytes(ZipFileIndexEntry entry, byte[] buffer) throws IOException {
+        byte[] header = getHeader(entry);
+
+        // entry is not compressed?
+        if (get2ByteLittleEndian(header, 8) == 0) {
+            zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
+            int offset = 0;
+            int size = buffer.length;
+            while (offset < size) {
+                int count = zipRandomFile.read(buffer, offset, size - offset);
+                if (count == -1)
+                    break;
+                offset += count;
+            }
+            return entry.size;
+        }
+
+        int csize = entry.compressedSize;
+        byte[] cbuf = new byte[csize];
+        zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
+        zipRandomFile.readFully(cbuf, 0, csize);
+
+        int count = inflate(cbuf, buffer);
+        if (count == -1)
+            throw new ZipException("corrupted zip file");
+
+        return entry.size;
+    }
+
+    //----------------------------------------------------------------------------
+    // Zip utilities
+    //----------------------------------------------------------------------------
+
+    private byte[] getHeader(ZipFileIndexEntry entry) throws IOException {
+        zipRandomFile.seek(entry.offset);
+        byte[] header = new byte[30];
+        zipRandomFile.readFully(header);
+        if (get4ByteLittleEndian(header, 0) != 0x04034b50)
+            throw new ZipException("corrupted zip file");
+        if ((get2ByteLittleEndian(header, 6) & 1) != 0)
+            throw new ZipException("encrypted zip file"); // offset 6 in the header of the ZipFileEntry
+        return header;
+    }
+
+  /*
+   * Inflate using the java.util.zip.Inflater class
+   */
+    private static Inflater inflater;
+    private int inflate(byte[] src, byte[] dest) {
+
+        // construct the inflater object or reuse an existing one
+        if (inflater == null)
+            inflater = new Inflater(true);
+
+        synchronized (inflater) {
+            inflater.reset();
+            inflater.setInput(src);
+            try {
+                return inflater.inflate(dest);
+            } catch (DataFormatException ex) {
+                return -1;
+            }
+        }
+    }
+
+    /**
+     * return the two bytes buf[pos], buf[pos+1] as an unsigned integer in little
+     * endian format.
+     */
+    private static int get2ByteLittleEndian(byte[] buf, int pos) {
+        return (buf[pos] & 0xFF) + ((buf[pos+1] & 0xFF) << 8);
+    }
+
+    /**
+     * return the 4 bytes buf[i..i+3] as an integer in little endian format.
+     */
+    private static int get4ByteLittleEndian(byte[] buf, int pos) {
+        return (buf[pos] & 0xFF) + ((buf[pos + 1] & 0xFF) << 8) +
+                ((buf[pos + 2] & 0xFF) << 16) + ((buf[pos + 3] & 0xFF) << 24);
+    }
+
+    /* ----------------------------------------------------------------------------
+     * ZipDirectory
+     * ----------------------------------------------------------------------------*/
+
+    private class ZipDirectory {
+        private String lastDir;
+        private int lastStart;
+        private int lastLen;
+
+        byte[] zipDir;
+        RandomAccessFile zipRandomFile = null;
+        ZipFileIndex zipFileIndex = null;
+
+        public ZipDirectory(RandomAccessFile zipRandomFile, long start, long end, ZipFileIndex index) throws IOException {
+            this.zipRandomFile = zipRandomFile;
+            this.zipFileIndex = index;
+
+            findCENRecord(start, end);
+        }
+
+        /*
+         * Reads zip file central directory.
+         * For more details see readCEN in zip_util.c from the JDK sources.
+         * This is a Java port of that function.
+         */
+        private void findCENRecord(long start, long end) throws IOException {
+            long totalLength = end - start;
+            int endbuflen = 1024;
+            byte[] endbuf = new byte[endbuflen];
+            long endbufend = end - start;
+
+            // There is a variable-length field after the dir offset record. We need to do consequential search.
+            while (endbufend >= 22) {
+                if (endbufend < endbuflen)
+                    endbuflen = (int)endbufend;
+                long endbufpos = endbufend - endbuflen;
+                zipRandomFile.seek(start + endbufpos);
+                zipRandomFile.readFully(endbuf, 0, endbuflen);
+                int i = endbuflen - 22;
+                while (i >= 0 &&
+                        !(endbuf[i] == 0x50 &&
+                        endbuf[i + 1] == 0x4b &&
+                        endbuf[i + 2] == 0x05 &&
+                        endbuf[i + 3] == 0x06 &&
+                        endbufpos + i + 22 +
+                        get2ByteLittleEndian(endbuf, i + 20) == totalLength)) {
+                    i--;
+                }
+
+                if (i >= 0) {
+                    zipDir = new byte[get4ByteLittleEndian(endbuf, i + 12) + 2];
+                    zipDir[0] = endbuf[i + 10];
+                    zipDir[1] = endbuf[i + 11];
+                    zipRandomFile.seek(start + get4ByteLittleEndian(endbuf, i + 16));
+                    zipRandomFile.readFully(zipDir, 2, zipDir.length - 2);
+                    return;
+                } else {
+                    endbufend = endbufpos + 21;
+                }
+            }
+            throw new ZipException("cannot read zip file");
+        }
+        private void buildIndex() throws IOException {
+            int entryCount = get2ByteLittleEndian(zipDir, 0);
+
+            entries = new ZipFileIndexEntry[entryCount];
+            // Add each of the files
+            if (entryCount > 0) {
+                directories = new HashMap<String, DirectoryEntry>();
+                ArrayList<ZipFileIndexEntry> entryList = new ArrayList<ZipFileIndexEntry>();
+                int pos = 2;
+                for (int i = 0; i < entryCount; i++) {
+                    pos = readEntry(pos, entryList, directories);
+                }
+
+                // Add the accumulated dirs into the same list
+                Iterator i = directories.keySet().iterator();
+                while (i.hasNext()) {
+                    ZipFileIndexEntry zipFileIndexEntry = new ZipFileIndexEntry( (String) i.next());
+                    zipFileIndexEntry.isDir = true;
+                    entryList.add(zipFileIndexEntry);
+                }
+
+                entries = entryList.toArray(new ZipFileIndexEntry[entryList.size()]);
+                Arrays.sort(entries);
+            } else {
+                cleanupState();
+            }
+        }
+
+        private int readEntry(int pos, List<ZipFileIndexEntry> entryList,
+                Map<String, DirectoryEntry> directories) throws IOException {
+            if (get4ByteLittleEndian(zipDir, pos) != 0x02014b50) {
+                throw new ZipException("cannot read zip file entry");
+            }
+
+            int dirStart = pos + 46;
+            int fileStart = dirStart;
+            int fileEnd = fileStart + get2ByteLittleEndian(zipDir, pos + 28);
+
+            if (zipFileIndex.symbolFilePrefixLength != 0 &&
+                    ((fileEnd - fileStart) >= symbolFilePrefixLength)) {
+                dirStart += zipFileIndex.symbolFilePrefixLength;
+               fileStart += zipFileIndex.symbolFilePrefixLength;
+            }
+
+            // Use the OS's path separator. Keep the position of the last one.
+            for (int index = fileStart; index < fileEnd; index++) {
+                byte nextByte = zipDir[index];
+                if (nextByte == (byte)'\\' || nextByte == (byte)'/') {
+                    zipDir[index] = (byte)File.separatorChar;
+                    fileStart = index + 1;
+                }
+            }
+
+            String directory = null;
+            if (fileStart == dirStart)
+                directory = "";
+            else if (lastDir != null && lastLen == fileStart - dirStart - 1) {
+                int index = lastLen - 1;
+                while (zipDir[lastStart + index] == zipDir[dirStart + index]) {
+                    if (index == 0) {
+                        directory = lastDir;
+                        break;
+                    }
+                    index--;
+                }
+            }
+
+            // Sub directories
+            if (directory == null) {
+                lastStart = dirStart;
+                lastLen = fileStart - dirStart - 1;
+
+                directory = new String(zipDir, dirStart, lastLen, "UTF-8").intern();
+                lastDir = directory;
+
+                // Enter also all the parent directories
+                String tempDirectory = directory;
+
+                while (directories.get(tempDirectory) == null) {
+                    directories.put(tempDirectory, new DirectoryEntry(tempDirectory, zipFileIndex));
+                    int separator = tempDirectory.lastIndexOf(File.separatorChar);
+                    if (separator == -1)
+                        break;
+                    tempDirectory = tempDirectory.substring(0, separator);
+                }
+            }
+            else {
+                directory = directory.intern();
+                if (directories.get(directory) == null) {
+                    directories.put(directory, new DirectoryEntry(directory, zipFileIndex));
+                }
+            }
+
+            // For each dir create also a file
+            if (fileStart != fileEnd) {
+                ZipFileIndexEntry entry = new ZipFileIndexEntry(directory,
+                        new String(zipDir, fileStart, fileEnd - fileStart, "UTF-8"));
+
+                entry.setNativeTime(get4ByteLittleEndian(zipDir, pos + 12));
+                entry.compressedSize = get4ByteLittleEndian(zipDir, pos + 20);
+                entry.size = get4ByteLittleEndian(zipDir, pos + 24);
+                entry.offset = get4ByteLittleEndian(zipDir, pos + 42);
+                entryList.add(entry);
+            }
+
+            return pos + 46 +
+                    get2ByteLittleEndian(zipDir, pos + 28) +
+                    get2ByteLittleEndian(zipDir, pos + 30) +
+                    get2ByteLittleEndian(zipDir, pos + 32);
+        }
+    }
+
+    /**
+     * Returns the last modified timestamp of a zip file.
+     * @return long
+     */
+    public long getZipFileLastModified() throws IOException {
+        lock.lock();
+        try {
+            checkIndex();
+            return zipFileLastModified;
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    /** ------------------------------------------------------------------------
+     *  DirectoryEntry class
+     * -------------------------------------------------------------------------*/
+    static class DirectoryEntry {
+        private boolean filesInited;
+        private boolean directoriesInited;
+        private boolean zipFileEntriesInited;
+        private boolean entriesInited;
+
+        private long writtenOffsetOffset = 0;
+
+        private String dirName;
+
+        private com.sun.tools.javac.util.List<String> zipFileEntriesFiles = com.sun.tools.javac.util.List.<String>nil();
+        private com.sun.tools.javac.util.List<String> zipFileEntriesDirectories = com.sun.tools.javac.util.List.<String>nil();
+        private com.sun.tools.javac.util.List<ZipFileIndexEntry>  zipFileEntries = com.sun.tools.javac.util.List.<ZipFileIndexEntry>nil();
+
+        private List<ZipFileIndexEntry> entries = new ArrayList<ZipFileIndexEntry>();
+
+        private ZipFileIndex zipFileIndex;
+
+        private int numEntries;
+
+        DirectoryEntry(String dirName, ZipFileIndex index) {
+        filesInited = false;
+            directoriesInited = false;
+            entriesInited = false;
+
+            if (File.separatorChar == '/') {
+                dirName.replace('\\', '/');
+            }
+            else {
+                dirName.replace('/', '\\');
+            }
+
+            this.dirName = dirName.intern();
+            this.zipFileIndex = index;
+        }
+
+        private com.sun.tools.javac.util.List<String> getFiles() {
+            if (filesInited) {
+                return zipFileEntriesFiles;
+            }
+
+            initEntries();
+
+            for (ZipFileIndexEntry e : entries) {
+                if (!e.isDir) {
+                    zipFileEntriesFiles = zipFileEntriesFiles.append(e.name);
+                }
+            }
+            filesInited = true;
+            return zipFileEntriesFiles;
+        }
+
+        private com.sun.tools.javac.util.List<String> getDirectories() {
+            if (directoriesInited) {
+                return zipFileEntriesFiles;
+            }
+
+            initEntries();
+
+            for (ZipFileIndexEntry e : entries) {
+                if (e.isDir) {
+                    zipFileEntriesDirectories = zipFileEntriesDirectories.append(e.name);
+                }
+            }
+
+            directoriesInited = true;
+
+            return zipFileEntriesDirectories;
+        }
+
+        private com.sun.tools.javac.util.List<ZipFileIndexEntry> getEntries() {
+            if (zipFileEntriesInited) {
+                return zipFileEntries;
+            }
+
+            initEntries();
+
+            zipFileEntries = com.sun.tools.javac.util.List.nil();
+            for (ZipFileIndexEntry zfie : entries) {
+                zipFileEntries = zipFileEntries.append(zfie);
+            }
+
+            zipFileEntriesInited = true;
+
+            return zipFileEntries;
+        }
+
+        private ZipFileIndexEntry getEntry(String rootName) {
+            initEntries();
+            int index = Collections.binarySearch(entries, new ZipFileIndexEntry(dirName, rootName));
+            if (index < 0) {
+                return null;
+            }
+
+            return entries.get(index);
+        }
+
+        private void initEntries() {
+            if (entriesInited) {
+                return;
+            }
+
+            if (!zipFileIndex.readFromIndex) {
+                int from = -Arrays.binarySearch(zipFileIndex.entries,
+                        new ZipFileIndexEntry(dirName, ZipFileIndex.MIN_CHAR)) - 1;
+                int to = -Arrays.binarySearch(zipFileIndex.entries,
+                        new ZipFileIndexEntry(dirName, MAX_CHAR)) - 1;
+
+                boolean emptyList = false;
+
+                for (int i = from; i < to; i++) {
+                    entries.add(zipFileIndex.entries[i]);
+                }
+            } else {
+                File indexFile = zipFileIndex.getIndexFile();
+                if (indexFile != null) {
+                    RandomAccessFile raf = null;
+                    try {
+                        raf = new RandomAccessFile(indexFile, "r");
+                        raf.seek(writtenOffsetOffset);
+
+                        for (int nFiles = 0; nFiles < numEntries; nFiles++) {
+                            // Read the name bytes
+                            int zfieNameBytesLen = raf.readInt();
+                            byte [] zfieNameBytes = new byte[zfieNameBytesLen];
+                            raf.read(zfieNameBytes);
+                            String eName = new String(zfieNameBytes, "UTF-8");
+
+                            // Read isDir
+                            boolean eIsDir = raf.readByte() == (byte)0 ? false : true;
+
+                            // Read offset of bytes in the real Jar/Zip file
+                            int eOffset = raf.readInt();
+
+                            // Read size of the file in the real Jar/Zip file
+                            int eSize = raf.readInt();
+
+                            // Read compressed size of the file in the real Jar/Zip file
+                            int eCsize = raf.readInt();
+
+                            // Read java time stamp of the file in the real Jar/Zip file
+                            long eJavaTimestamp = raf.readLong();
+
+                            ZipFileIndexEntry rfie = new ZipFileIndexEntry(dirName, eName);
+                            rfie.isDir = eIsDir;
+                            rfie.offset = eOffset;
+                            rfie.size = eSize;
+                            rfie.compressedSize = eCsize;
+                            rfie.javatime = eJavaTimestamp;
+                            entries.add(rfie);
+                        }
+                    } catch (Throwable t) {
+                        // Do nothing
+                    } finally {
+                        try {
+                            if (raf == null) {
+                                raf.close();
+                            }
+                        } catch (Throwable t) {
+                            // Do nothing
+                        }
+                    }
+                }
+            }
+
+            entriesInited = true;
+        }
+
+        List<ZipFileIndexEntry> getEntriesAsCollection() {
+            initEntries();
+
+            return entries;
+        }
+    }
+
+    private boolean readIndex() {
+        if (triedToReadIndex || !usePreindexedCache) {
+            return false;
+        }
+
+        boolean ret = false;
+        lock.lock();
+        try {
+            triedToReadIndex = true;
+            RandomAccessFile raf = null;
+            try {
+                File indexFileName = getIndexFile();
+                raf = new RandomAccessFile(indexFileName, "r");
+
+                long fileStamp = raf.readLong();
+                if (zipFile.lastModified() != fileStamp) {
+                    ret = false;
+                } else {
+                    directories = new HashMap<String, DirectoryEntry>();
+                    int numDirs = raf.readInt();
+                    for (int nDirs = 0; nDirs < numDirs; nDirs++) {
+                        int dirNameBytesLen = raf.readInt();
+                        byte [] dirNameBytes = new byte[dirNameBytesLen];
+                        raf.read(dirNameBytes);
+
+                        String dirNameStr = new String(dirNameBytes, "UTF-8");
+                        DirectoryEntry de = new DirectoryEntry(dirNameStr, this);
+                        de.numEntries = raf.readInt();
+                        de.writtenOffsetOffset = raf.readLong();
+                        directories.put(dirNameStr, de);
+                    }
+                    ret = true;
+                    zipFileLastModified = fileStamp;
+                }
+            } catch (Throwable t) {
+                // Do nothing
+            } finally {
+                if (raf != null) {
+                    try {
+                        raf.close();
+                    } catch (Throwable tt) {
+                        // Do nothing
+                    }
+                }
+            }
+            if (ret == true) {
+                readFromIndex = true;
+            }
+        }
+        finally {
+            lock.unlock();
+        }
+
+        return ret;
+    }
+
+    private boolean writeIndex() {
+        boolean ret = false;
+        if (readFromIndex || !usePreindexedCache) {
+            return true;
+        }
+
+        if (!writeIndex) {
+            return true;
+        }
+
+        File indexFile = getIndexFile();
+        if (indexFile == null) {
+            return false;
+        }
+
+        RandomAccessFile raf = null;
+        long writtenSoFar = 0;
+        try {
+            raf = new RandomAccessFile(indexFile, "rw");
+
+            raf.writeLong(zipFileLastModified);
+            writtenSoFar += 8;
+
+
+            Iterator<String> iterDirName = directories.keySet().iterator();
+            List<DirectoryEntry> directoriesToWrite = new ArrayList<DirectoryEntry>();
+            Map<String, Long> offsets = new HashMap<String, Long>();
+            raf.writeInt(directories.keySet().size());
+            writtenSoFar += 4;
+
+            while(iterDirName.hasNext()) {
+                String dirName = iterDirName.next();
+                DirectoryEntry dirEntry = directories.get(dirName);
+
+                directoriesToWrite.add(dirEntry);
+
+                // Write the dir name bytes
+                byte [] dirNameBytes = dirName.getBytes("UTF-8");
+                int dirNameBytesLen = dirNameBytes.length;
+                raf.writeInt(dirNameBytesLen);
+                writtenSoFar += 4;
+
+                raf.write(dirNameBytes);
+                writtenSoFar += dirNameBytesLen;
+
+                // Write the number of files in the dir
+                List dirEntries = dirEntry.getEntriesAsCollection();
+                raf.writeInt(dirEntries.size());
+                writtenSoFar += 4;
+
+                offsets.put(dirName, new Long(writtenSoFar));
+
+                // Write the offset of the file's data in the dir
+                dirEntry.writtenOffsetOffset = 0L;
+                raf.writeLong(0L);
+                writtenSoFar += 8;
+            }
+
+            for (DirectoryEntry de : directoriesToWrite) {
+                // Fix up the offset in the directory table
+                long currFP = raf.getFilePointer();
+
+                long offsetOffset = offsets.get(de.dirName).longValue();
+                raf.seek(offsetOffset);
+                raf.writeLong(writtenSoFar);
+
+                raf.seek(currFP);
+
+                // Now write each of the files in the DirectoryEntry
+                List<ZipFileIndexEntry> entries = de.getEntriesAsCollection();
+                for (ZipFileIndexEntry zfie : entries) {
+                    // Write the name bytes
+                    byte [] zfieNameBytes = zfie.name.getBytes("UTF-8");
+                    int zfieNameBytesLen = zfieNameBytes.length;
+                    raf.writeInt(zfieNameBytesLen);
+                    writtenSoFar += 4;
+                    raf.write(zfieNameBytes);
+                    writtenSoFar += zfieNameBytesLen;
+
+                    // Write isDir
+                    raf.writeByte(zfie.isDir ? (byte)1 : (byte)0);
+                    writtenSoFar += 1;
+
+                    // Write offset of bytes in the real Jar/Zip file
+                    raf.writeInt(zfie.offset);
+                    writtenSoFar += 4;
+
+                    // Write size of the file in the real Jar/Zip file
+                    raf.writeInt(zfie.size);
+                    writtenSoFar += 4;
+
+                    // Write compressed size of the file in the real Jar/Zip file
+                    raf.writeInt(zfie.compressedSize);
+                    writtenSoFar += 4;
+
+                    // Write java time stamp of the file in the real Jar/Zip file
+                    raf.writeLong(zfie.getLastModified());
+                    writtenSoFar += 8;
+                }
+            }
+        } catch (Throwable t) {
+            // Do nothing
+        } finally {
+            try {
+                if (raf != null) {
+                    raf.close();
+                }
+            } catch(IOException ioe) {
+                // Do nothing
+            }
+        }
+
+        return ret;
+    }
+
+    public boolean writeZipIndex() {
+        lock.lock();
+        try {
+            return writeIndex();
+        }
+        finally {
+            lock.unlock();
+        }
+    }
+
+    private File getIndexFile() {
+        if (zipIndexFile == null) {
+            if (zipFile == null) {
+                return null;
+            }
+
+            zipIndexFile = new File((preindexedCacheLocation == null ? "" : preindexedCacheLocation) +
+                    zipFile.getName() + ".index");
+        }
+
+        return zipIndexFile;
+    }
+
+    public File getZipFile() {
+        return zipFile;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexEntry.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,116 @@
+/*
+ * 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 com.sun.tools.javac.file;
+
+import java.io.File;
+
+public final class ZipFileIndexEntry implements Comparable<ZipFileIndexEntry> {
+    public static final ZipFileIndexEntry[] EMPTY_ARRAY = {};
+
+    // Directory related
+    String dir;
+    boolean isDir;
+
+    // File related
+    String name;
+
+    int offset;
+    int size;
+    int compressedSize;
+    long javatime;
+
+    private int nativetime;
+
+    public ZipFileIndexEntry(String path) {
+        int separator = path.lastIndexOf(File.separatorChar);
+        if (separator == -1) {
+            dir = "".intern();
+            name = path;
+        } else {
+            dir = path.substring(0, separator).intern();
+            name = path.substring(separator + 1);
+        }
+    }
+
+    public ZipFileIndexEntry(String directory, String name) {
+        this.dir = directory.intern();
+        this.name = name;
+    }
+
+    public String getName() {
+        if (dir == null || dir.length() == 0) {
+            return name;
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append(dir);
+        sb.append(File.separatorChar);
+        sb.append(name);
+        return sb.toString();
+    }
+
+    public String getFileName() {
+        return name;
+    }
+
+    public long getLastModified() {
+        if (javatime == 0) {
+                javatime = dosToJavaTime(nativetime);
+        }
+        return javatime;
+    }
+
+    // From java.util.zip
+    private static long dosToJavaTime(int nativetime) {
+        // Bootstrap build problems prevent me from using the code directly
+        // Convert the raw/native time to a long for now
+        return (long)nativetime;
+    }
+
+    void setNativeTime(int natTime) {
+        nativetime = natTime;
+    }
+
+    public boolean isDirectory() {
+        return isDir;
+    }
+
+    public int compareTo(ZipFileIndexEntry other) {
+        String otherD = other.dir;
+        if (dir != otherD) {
+            int c = dir.compareTo(otherD);
+            if (c != 0)
+                return c;
+        }
+        return name.compareTo(other.name);
+    }
+
+
+    public String toString() {
+        return isDir ? ("Dir:" + dir + " : " + name) :
+            (dir + ":" + name);
+    }
+}
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -42,6 +42,7 @@
 import com.sun.tools.javac.code.Type.*;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.code.Symtab;
+import com.sun.tools.javac.file.BaseFileObject;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.List;
 
--- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -40,6 +40,7 @@
 import javax.tools.JavaFileObject;
 import javax.tools.DiagnosticListener;
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.source.util.TaskEvent;
 import com.sun.source.util.TaskListener;
 
--- a/langtools/src/share/classes/com/sun/tools/javac/main/JavacOption.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavacOption.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/main/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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,13 +25,13 @@
 
 package com.sun.tools.javac.main;
 
-import com.sun.tools.javac.util.Options;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.MissingResourceException;
 
 import com.sun.tools.javac.code.Source;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.jvm.Target;
 import com.sun.tools.javac.main.JavacOption.Option;
 import com.sun.tools.javac.main.RecognizedOptions.OptionHelper;
--- a/langtools/src/share/classes/com/sun/tools/javac/main/OptionName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/OptionName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/main/RecognizedOptions.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/parser/Parser.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Parser.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Scanner.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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,16 +25,12 @@
 
 package com.sun.tools.javac.parser;
 
-import java.io.*;
 import java.nio.*;
-import java.nio.ByteBuffer;
-import java.nio.charset.*;
-import java.nio.channels.*;
-import java.util.regex.*;
 
+import com.sun.tools.javac.code.Source;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.util.*;
 
-import com.sun.tools.javac.code.Source;
 
 import static com.sun.tools.javac.parser.Token.*;
 import static com.sun.tools.javac.util.LayoutCharacters.*;
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,22 +25,17 @@
 
 package com.sun.tools.javac.processing;
 
-import com.sun.source.util.TaskEvent;
-import com.sun.source.util.TaskListener;
-import com.sun.tools.javac.api.JavacTaskImpl;
-import com.sun.tools.javac.util.List;
-import com.sun.tools.javac.util.*;
-import com.sun.tools.javac.code.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.comp.*;
-import com.sun.tools.javac.jvm.*;
-import com.sun.tools.javac.tree.*;
-import com.sun.tools.javac.parser.*;
-import com.sun.tools.javac.code.Symbol.*;
-import com.sun.tools.javac.model.JavacElements;
-import com.sun.tools.javac.model.JavacTypes;
-import com.sun.tools.javac.tree.JCTree.*;
-import com.sun.tools.javac.main.JavaCompiler;
+
+import java.lang.reflect.*;
+import java.util.*;
+import java.util.regex.*;
+
+import java.net.URL;
+import java.io.Closeable;
+import java.io.File;
+import java.io.PrintWriter;
+import java.io.IOException;
+import java.net.MalformedURLException;
 import java.io.StringWriter;
 
 import javax.annotation.processing.*;
@@ -50,24 +45,34 @@
 import javax.lang.model.element.TypeElement;
 import javax.lang.model.element.PackageElement;
 import javax.lang.model.util.*;
-
 import javax.tools.JavaFileManager;
 import javax.tools.StandardJavaFileManager;
 import javax.tools.JavaFileObject;
 import javax.tools.DiagnosticListener;
-import static javax.tools.StandardLocation.*;
-
-import java.lang.reflect.*;
-import java.util.*;
-import java.util.regex.*;
 
-import java.net.URLClassLoader;
-import java.net.URL;
-import java.io.Closeable;
-import java.io.File;
-import java.io.PrintWriter;
-import java.io.IOException;
-import java.net.MalformedURLException;
+import com.sun.source.util.TaskEvent;
+import com.sun.source.util.TaskListener;
+import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.code.*;
+import com.sun.tools.javac.code.Symbol.*;
+import com.sun.tools.javac.file.Paths;
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.jvm.*;
+import com.sun.tools.javac.main.JavaCompiler;
+import com.sun.tools.javac.model.JavacElements;
+import com.sun.tools.javac.model.JavacTypes;
+import com.sun.tools.javac.parser.*;
+import com.sun.tools.javac.tree.*;
+import com.sun.tools.javac.tree.JCTree.*;
+import com.sun.tools.javac.util.Abort;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.List;
+import com.sun.tools.javac.util.ListBuffer;
+import com.sun.tools.javac.util.Log;
+import com.sun.tools.javac.util.Name;
+import com.sun.tools.javac.util.Options;
+
+import static javax.tools.StandardLocation.*;
 
 /**
  * Objects of this class hold and manage the state needed to support
--- a/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/com/sun/tools/javac/util/BaseFileObject.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Copyright 2005-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 com.sun.tools.javac.util;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.nio.charset.CharsetDecoder;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.NestingKind;
-import javax.tools.JavaFileObject;
-
-import static javax.tools.JavaFileObject.Kind.*;
-
-public abstract class BaseFileObject implements JavaFileObject {
-
-    public JavaFileObject.Kind getKind() {
-        String n = getName();
-        if (n.endsWith(CLASS.extension))
-            return CLASS;
-        else if (n.endsWith(SOURCE.extension))
-            return SOURCE;
-        else if (n.endsWith(HTML.extension))
-            return HTML;
-        else
-            return OTHER;
-    }
-
-    @Override
-    public String toString() {
-        return getPath();
-    }
-
-    /** @deprecated see bug 6410637 */
-    @Deprecated
-    public String getPath() {
-        return getName();
-    }
-
-    /** @deprecated see bug 6410637 */
-    @Deprecated
-    abstract public String getName();
-
-    public NestingKind getNestingKind() { return null; }
-
-    public Modifier getAccessLevel()  { return null; }
-
-    public Reader openReader(boolean ignoreEncodingErrors) throws IOException {
-        return new InputStreamReader(openInputStream(), getDecoder(ignoreEncodingErrors));
-    }
-
-    protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
-        throw new UnsupportedOperationException();
-    }
-
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/DiagnosticFormatter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -27,6 +27,7 @@
 
 import javax.tools.JavaFileObject;
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticSource;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
 
--- a/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/JCDiagnostic.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -25,17 +25,13 @@
 
 package com.sun.tools.javac.util;
 
-import java.net.URI;
-import java.text.MessageFormat;
 import java.util.Locale;
 import java.util.Map;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
 
 import javax.tools.Diagnostic;
-import javax.tools.FileObject;
 import javax.tools.JavaFileObject;
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.tree.JCTree;
 
 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticType.*;
--- a/langtools/src/share/classes/com/sun/tools/javac/util/JavacFileManager.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1715 +0,0 @@
-/*
- * Copyright 2005-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 com.sun.tools.javac.util;
-
-import com.sun.tools.javac.main.JavacOption;
-import com.sun.tools.javac.main.OptionName;
-import com.sun.tools.javac.main.RecognizedOptions;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.ref.SoftReference;
-import java.net.MalformedURLException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.nio.ByteBuffer;
-import java.nio.CharBuffer;
-import java.nio.channels.FileChannel;
-import java.nio.charset.Charset;
-import java.nio.charset.CharsetDecoder;
-import java.nio.charset.CoderResult;
-import java.nio.charset.CodingErrorAction;
-import java.nio.charset.IllegalCharsetNameException;
-import java.nio.charset.UnsupportedCharsetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import javax.lang.model.SourceVersion;
-import javax.tools.FileObject;
-import javax.tools.JavaFileManager;
-import javax.tools.JavaFileObject;
-
-import com.sun.tools.javac.code.Source;
-import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.tools.StandardJavaFileManager;
-
-import com.sun.tools.javac.zip.*;
-import java.io.ByteArrayInputStream;
-
-import static com.sun.tools.javac.main.OptionName.*;
-import static javax.tools.StandardLocation.*;
-
-/**
- * This class provides access to the source, class and other files
- * used by the compiler and related tools.
- */
-public class JavacFileManager implements StandardJavaFileManager {
-
-    private static final String[] symbolFileLocation = { "lib", "ct.sym" };
-    private static final String symbolFilePrefix = "META-INF/sym/rt.jar/";
-
-    boolean useZipFileIndex;
-
-    private static int symbolFilePrefixLength = 0;
-    static {
-        try {
-            symbolFilePrefixLength = symbolFilePrefix.getBytes("UTF-8").length;
-        } catch (java.io.UnsupportedEncodingException uee) {
-            // Can't happen...UTF-8 is always supported.
-        }
-    }
-
-    private static boolean CHECK_ZIP_TIMESTAMP = false;
-    private static Map<File, Boolean> isDirectory = new ConcurrentHashMap<File, Boolean>();
-
-
-    public static char[] toArray(CharBuffer buffer) {
-        if (buffer.hasArray())
-            return ((CharBuffer)buffer.compact().flip()).array();
-        else
-            return buffer.toString().toCharArray();
-    }
-
-    /**
-     * The log to be used for error reporting.
-     */
-    protected Log log;
-
-    /** Encapsulates knowledge of paths
-     */
-    private Paths paths;
-
-    private Options options;
-
-    private final File uninited = new File("U N I N I T E D");
-
-    private final Set<JavaFileObject.Kind> sourceOrClass =
-        EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS);
-
-    /** The standard output directory, primarily used for classes.
-     *  Initialized by the "-d" option.
-     *  If classOutDir = null, files are written into same directory as the sources
-     *  they were generated from.
-     */
-    private File classOutDir = uninited;
-
-    /** The output directory, used when generating sources while processing annotations.
-     *  Initialized by the "-s" option.
-     */
-    private File sourceOutDir = uninited;
-
-    protected boolean mmappedIO;
-    protected boolean ignoreSymbolFile;
-
-    /**
-     * User provided charset (through javax.tools).
-     */
-    protected Charset charset;
-
-    /**
-     * Register a Context.Factory to create a JavacFileManager.
-     */
-    public static void preRegister(final Context context) {
-        context.put(JavaFileManager.class, new Context.Factory<JavaFileManager>() {
-            public JavaFileManager make() {
-                return new JavacFileManager(context, true, null);
-            }
-        });
-    }
-
-    /**
-     * Create a JavacFileManager using a given context, optionally registering
-     * it as the JavaFileManager for that context.
-     */
-    public JavacFileManager(Context context, boolean register, Charset charset) {
-        if (register)
-            context.put(JavaFileManager.class, this);
-        byteBufferCache = new ByteBufferCache();
-        this.charset = charset;
-        setContext(context);
-    }
-
-    /**
-     * Set the context for JavacFileManager.
-     */
-    public void setContext(Context context) {
-        log = Log.instance(context);
-        if (paths == null) {
-            paths = Paths.instance(context);
-        } else {
-            // Reuse the Paths object as it stores the locations that
-            // have been set with setLocation, etc.
-            paths.setContext(context);
-        }
-
-        options = Options.instance(context);
-
-        useZipFileIndex = System.getProperty("useJavaUtilZip") == null;// TODO: options.get("useJavaUtilZip") == null;
-        CHECK_ZIP_TIMESTAMP = System.getProperty("checkZipIndexTimestamp") != null;// TODO: options.get("checkZipIndexTimestamp") != null;
-
-        mmappedIO = options.get("mmappedIO") != null;
-        ignoreSymbolFile = options.get("ignore.symbol.file") != null;
-    }
-
-    public JavaFileObject getFileForInput(String name) {
-        return getRegularFile(new File(name));
-    }
-
-    public JavaFileObject getRegularFile(File file) {
-        return new RegularFileObject(file);
-    }
-
-    public JavaFileObject getFileForOutput(String classname,
-                                           JavaFileObject.Kind kind,
-                                           JavaFileObject sibling)
-        throws IOException
-    {
-        return getJavaFileForOutput(CLASS_OUTPUT, classname, kind, sibling);
-    }
-
-    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names) {
-        ListBuffer<File> files = new ListBuffer<File>();
-        for (String name : names)
-            files.append(new File(nullCheck(name)));
-        return getJavaFileObjectsFromFiles(files.toList());
-    }
-
-    public Iterable<? extends JavaFileObject> getJavaFileObjects(String... names) {
-        return getJavaFileObjectsFromStrings(Arrays.asList(nullCheck(names)));
-    }
-
-    protected JavaFileObject.Kind getKind(String extension) {
-        if (extension.equals(JavaFileObject.Kind.CLASS.extension))
-            return JavaFileObject.Kind.CLASS;
-        else if (extension.equals(JavaFileObject.Kind.SOURCE.extension))
-            return JavaFileObject.Kind.SOURCE;
-        else if (extension.equals(JavaFileObject.Kind.HTML.extension))
-            return JavaFileObject.Kind.HTML;
-        else
-            return JavaFileObject.Kind.OTHER;
-    }
-
-    private static boolean isValidName(String name) {
-        // Arguably, isValidName should reject keywords (such as in SourceVersion.isName() ),
-        // but the set of keywords depends on the source level, and we don't want
-        // impls of JavaFileManager to have to be dependent on the source level.
-        // Therefore we simply check that the argument is a sequence of identifiers
-        // separated by ".".
-        for (String s : name.split("\\.", -1)) {
-            if (!SourceVersion.isIdentifier(s))
-                return false;
-        }
-        return true;
-    }
-
-    private static void validateClassName(String className) {
-        if (!isValidName(className))
-            throw new IllegalArgumentException("Invalid class name: " + className);
-    }
-
-    private static void validatePackageName(String packageName) {
-        if (packageName.length() > 0 && !isValidName(packageName))
-            throw new IllegalArgumentException("Invalid packageName name: " + packageName);
-    }
-
-    public static void testName(String name,
-                                boolean isValidPackageName,
-                                boolean isValidClassName)
-    {
-        try {
-            validatePackageName(name);
-            if (!isValidPackageName)
-                throw new AssertionError("Invalid package name accepted: " + name);
-            printAscii("Valid package name: \"%s\"", name);
-        } catch (IllegalArgumentException e) {
-            if (isValidPackageName)
-                throw new AssertionError("Valid package name rejected: " + name);
-            printAscii("Invalid package name: \"%s\"", name);
-        }
-        try {
-            validateClassName(name);
-            if (!isValidClassName)
-                throw new AssertionError("Invalid class name accepted: " + name);
-            printAscii("Valid class name: \"%s\"", name);
-        } catch (IllegalArgumentException e) {
-            if (isValidClassName)
-                throw new AssertionError("Valid class name rejected: " + name);
-            printAscii("Invalid class name: \"%s\"", name);
-        }
-    }
-    private static void printAscii(String format, Object... args) {
-        String message;
-        try {
-            final String ascii = "US-ASCII";
-            message = new String(String.format(null, format, args).getBytes(ascii), ascii);
-        } catch (java.io.UnsupportedEncodingException ex) {
-            throw new AssertionError(ex);
-        }
-        System.out.println(message);
-    }
-
-    /** Return external representation of name,
-     *  converting '.' to File.separatorChar.
-     */
-    private static String externalizeFileName(CharSequence name) {
-        return name.toString().replace('.', File.separatorChar);
-    }
-
-    private static String externalizeFileName(CharSequence n, JavaFileObject.Kind kind) {
-        return externalizeFileName(n) + kind.extension;
-    }
-
-    private static String baseName(String fileName) {
-        return fileName.substring(fileName.lastIndexOf(File.separatorChar) + 1);
-    }
-
-    /**
-     * Insert all files in subdirectory `subdirectory' of `directory' which end
-     * in one of the extensions in `extensions' into packageSym.
-     */
-    private void listDirectory(File directory,
-                               String subdirectory,
-                               Set<JavaFileObject.Kind> fileKinds,
-                               boolean recurse,
-                               ListBuffer<JavaFileObject> l) {
-        Archive archive = archives.get(directory);
-
-        boolean isFile = false;
-        if (CHECK_ZIP_TIMESTAMP) {
-            Boolean isf = isDirectory.get(directory);
-            if (isf == null) {
-                isFile = directory.isFile();
-                isDirectory.put(directory, isFile);
-            }
-            else {
-                isFile = directory.isFile();
-            }
-        }
-        else {
-            isFile = directory.isFile();
-        }
-
-        if (archive != null || isFile) {
-            if (archive == null) {
-                try {
-                    archive = openArchive(directory);
-                } catch (IOException ex) {
-                    log.error("error.reading.file",
-                       directory, ex.getLocalizedMessage());
-                    return;
-                }
-            }
-            if (subdirectory.length() != 0) {
-                if (!useZipFileIndex) {
-                    subdirectory = subdirectory.replace('\\', '/');
-                    if (!subdirectory.endsWith("/")) subdirectory = subdirectory + "/";
-                }
-                else {
-                    if (File.separatorChar == '/') {
-                        subdirectory = subdirectory.replace('\\', '/');
-                    }
-                    else {
-                        subdirectory = subdirectory.replace('/', '\\');
-                    }
-
-                    if (!subdirectory.endsWith(File.separator)) subdirectory = subdirectory + File.separator;
-                }
-            }
-
-            List<String> files = archive.getFiles(subdirectory);
-            if (files != null) {
-                for (String file; !files.isEmpty(); files = files.tail) {
-                    file = files.head;
-                    if (isValidFile(file, fileKinds)) {
-                        l.append(archive.getFileObject(subdirectory, file));
-                    }
-                }
-            }
-            if (recurse) {
-                for (String s: archive.getSubdirectories()) {
-                    if (s.startsWith(subdirectory) && !s.equals(subdirectory)) {
-                        // Because the archive map is a flat list of directories,
-                        // the enclosing loop will pick up all child subdirectories.
-                        // Therefore, there is no need to recurse deeper.
-                        listDirectory(directory, s, fileKinds, false, l);
-                    }
-                }
-            }
-        } else {
-            File d = subdirectory.length() != 0
-                ? new File(directory, subdirectory)
-                : directory;
-            if (!caseMapCheck(d, subdirectory))
-                return;
-
-            File[] files = d.listFiles();
-            if (files == null)
-                return;
-
-            for (File f: files) {
-                String fname = f.getName();
-                if (f.isDirectory()) {
-                    if (recurse && SourceVersion.isIdentifier(fname)) {
-                        listDirectory(directory,
-                                      subdirectory + File.separator + fname,
-                                      fileKinds,
-                                      recurse,
-                                      l);
-                    }
-                } else {
-                    if (isValidFile(fname, fileKinds)) {
-                        JavaFileObject fe =
-                        new RegularFileObject(fname, new File(d, fname));
-                        l.append(fe);
-                    }
-                }
-            }
-        }
-    }
-
-    private boolean isValidFile(String s, Set<JavaFileObject.Kind> fileKinds) {
-        int lastDot = s.lastIndexOf(".");
-        String extn = (lastDot == -1 ? s : s.substring(lastDot));
-        JavaFileObject.Kind kind = getKind(extn);
-        return fileKinds.contains(kind);
-    }
-
-    private static final boolean fileSystemIsCaseSensitive =
-        File.separatorChar == '/';
-
-    /** Hack to make Windows case sensitive. Test whether given path
-     *  ends in a string of characters with the same case as given name.
-     *  Ignore file separators in both path and name.
-     */
-    private boolean caseMapCheck(File f, String name) {
-        if (fileSystemIsCaseSensitive) return true;
-        // Note that getCanonicalPath() returns the case-sensitive
-        // spelled file name.
-        String path;
-        try {
-            path = f.getCanonicalPath();
-        } catch (IOException ex) {
-            return false;
-        }
-        char[] pcs = path.toCharArray();
-        char[] ncs = name.toCharArray();
-        int i = pcs.length - 1;
-        int j = ncs.length - 1;
-        while (i >= 0 && j >= 0) {
-            while (i >= 0 && pcs[i] == File.separatorChar) i--;
-            while (j >= 0 && ncs[j] == File.separatorChar) j--;
-            if (i >= 0 && j >= 0) {
-                if (pcs[i] != ncs[j]) return false;
-                i--;
-                j--;
-            }
-        }
-        return j < 0;
-    }
-
-    /**
-     * An archive provides a flat directory structure of a ZipFile by
-     * mapping directory names to lists of files (basenames).
-     */
-    public interface Archive {
-        void close() throws IOException;
-
-        boolean contains(String name);
-
-        JavaFileObject getFileObject(String subdirectory, String file);
-
-        List<String> getFiles(String subdirectory);
-
-        Set<String> getSubdirectories();
-    }
-
-    public class ZipArchive implements Archive {
-        protected final Map<String,List<String>> map;
-        protected final ZipFile zdir;
-        public ZipArchive(ZipFile zdir) throws IOException {
-            this.zdir = zdir;
-            this.map = new HashMap<String,List<String>>();
-            for (Enumeration<? extends ZipEntry> e = zdir.entries(); e.hasMoreElements(); ) {
-                ZipEntry entry;
-                try {
-                    entry = e.nextElement();
-                } catch (InternalError ex) {
-                    IOException io = new IOException();
-                    io.initCause(ex); // convenience constructors added in Mustang :-(
-                    throw io;
-                }
-                addZipEntry(entry);
-            }
-        }
-
-        void addZipEntry(ZipEntry entry) {
-            String name = entry.getName();
-            int i = name.lastIndexOf('/');
-            String dirname = name.substring(0, i+1);
-            String basename = name.substring(i+1);
-            if (basename.length() == 0)
-                return;
-            List<String> list = map.get(dirname);
-            if (list == null)
-                list = List.nil();
-            list = list.prepend(basename);
-            map.put(dirname, list);
-        }
-
-        public boolean contains(String name) {
-            int i = name.lastIndexOf('/');
-            String dirname = name.substring(0, i+1);
-            String basename = name.substring(i+1);
-            if (basename.length() == 0)
-                return false;
-            List<String> list = map.get(dirname);
-            return (list != null && list.contains(basename));
-        }
-
-        public List<String> getFiles(String subdirectory) {
-            return map.get(subdirectory);
-        }
-
-        public JavaFileObject getFileObject(String subdirectory, String file) {
-            ZipEntry ze = zdir.getEntry(subdirectory + file);
-            return new ZipFileObject(file, zdir, ze);
-        }
-
-        public Set<String> getSubdirectories() {
-            return map.keySet();
-        }
-
-        public void close() throws IOException {
-            zdir.close();
-        }
-    }
-
-    public class SymbolArchive extends ZipArchive {
-        final File origFile;
-        public SymbolArchive(File orig, ZipFile zdir) throws IOException {
-            super(zdir);
-            this.origFile = orig;
-        }
-
-        @Override
-        void addZipEntry(ZipEntry entry) {
-            // called from super constructor, may not refer to origFile.
-            String name = entry.getName();
-            if (!name.startsWith(symbolFilePrefix))
-                return;
-            name = name.substring(symbolFilePrefix.length());
-            int i = name.lastIndexOf('/');
-            String dirname = name.substring(0, i+1);
-            String basename = name.substring(i+1);
-            if (basename.length() == 0)
-                return;
-            List<String> list = map.get(dirname);
-            if (list == null)
-                list = List.nil();
-            list = list.prepend(basename);
-            map.put(dirname, list);
-        }
-
-        @Override
-        public JavaFileObject getFileObject(String subdirectory, String file) {
-            return super.getFileObject(symbolFilePrefix + subdirectory, file);
-        }
-    }
-
-    public class MissingArchive implements Archive {
-        final File zipFileName;
-        public MissingArchive(File name) {
-            zipFileName = name;
-        }
-        public boolean contains(String name) {
-              return false;
-        }
-
-        public void close() {
-        }
-
-        public JavaFileObject getFileObject(String subdirectory, String file) {
-            return null;
-        }
-
-        public List<String> getFiles(String subdirectory) {
-            return List.nil();
-        }
-
-        public Set<String> getSubdirectories() {
-            return Collections.emptySet();
-        }
-    }
-
-    /** A directory of zip files already opened.
-     */
-    Map<File, Archive> archives = new HashMap<File,Archive>();
-
-    /** Open a new zip file directory.
-     */
-    protected Archive openArchive(File zipFileName) throws IOException {
-        Archive archive = archives.get(zipFileName);
-        if (archive == null) {
-            File origZipFileName = zipFileName;
-            if (!ignoreSymbolFile && paths.isBootClassPathRtJar(zipFileName)) {
-                File file = zipFileName.getParentFile().getParentFile(); // ${java.home}
-                if (new File(file.getName()).equals(new File("jre")))
-                    file = file.getParentFile();
-                // file == ${jdk.home}
-                for (String name : symbolFileLocation)
-                    file = new File(file, name);
-                // file == ${jdk.home}/lib/ct.sym
-                if (file.exists())
-                    zipFileName = file;
-            }
-
-            try {
-
-                ZipFile zdir = null;
-
-                boolean usePreindexedCache = false;
-                String preindexCacheLocation = null;
-
-                if (!useZipFileIndex) {
-                    zdir = new ZipFile(zipFileName);
-                }
-                else {
-                    usePreindexedCache = options.get("usezipindex") != null;
-                    preindexCacheLocation = options.get("java.io.tmpdir");
-                    String optCacheLoc = options.get("cachezipindexdir");
-
-                    if (optCacheLoc != null && optCacheLoc.length() != 0) {
-                        if (optCacheLoc.startsWith("\"")) {
-                            if (optCacheLoc.endsWith("\"")) {
-                                optCacheLoc = optCacheLoc.substring(1, optCacheLoc.length() - 1);
-                            }
-                           else {
-                                optCacheLoc = optCacheLoc.substring(1);
-                            }
-                        }
-
-                        File cacheDir = new File(optCacheLoc);
-                        if (cacheDir.exists() && cacheDir.canWrite()) {
-                            preindexCacheLocation = optCacheLoc;
-                            if (!preindexCacheLocation.endsWith("/") &&
-                                !preindexCacheLocation.endsWith(File.separator)) {
-                                preindexCacheLocation += File.separator;
-                            }
-                        }
-                    }
-                }
-
-                if (origZipFileName == zipFileName) {
-                    if (!useZipFileIndex) {
-                        archive = new ZipArchive(zdir);
-                    } else {
-                        archive = new ZipFileIndexArchive(this, ZipFileIndex.getZipFileIndex(zipFileName, 0,
-                                usePreindexedCache, preindexCacheLocation, options.get("writezipindexfiles") != null));
-                    }
-                }
-                else {
-                    if (!useZipFileIndex) {
-                        archive = new SymbolArchive(origZipFileName, zdir);
-                    }
-                    else {
-                        archive = new ZipFileIndexArchive(this, ZipFileIndex.getZipFileIndex(zipFileName, symbolFilePrefixLength,
-                                usePreindexedCache, preindexCacheLocation, options.get("writezipindexfiles") != null));
-                    }
-                }
-            } catch (FileNotFoundException ex) {
-                archive = new MissingArchive(zipFileName);
-            } catch (IOException ex) {
-                log.error("error.reading.file", zipFileName, ex.getLocalizedMessage());
-                archive = new MissingArchive(zipFileName);
-            }
-
-            archives.put(origZipFileName, archive);
-        }
-        return archive;
-    }
-
-    /** Flush any output resources.
-     */
-    public void flush() {
-        contentCache.clear();
-    }
-
-    /**
-     * Close the JavaFileManager, releasing resources.
-     */
-    public void close() {
-        for (Iterator<Archive> i = archives.values().iterator(); i.hasNext(); ) {
-            Archive a = i.next();
-            i.remove();
-            try {
-                a.close();
-            } catch (IOException e) {
-            }
-        }
-    }
-
-    private Map<JavaFileObject, SoftReference<CharBuffer>> contentCache = new HashMap<JavaFileObject, SoftReference<CharBuffer>>();
-
-    private String defaultEncodingName;
-    private String getDefaultEncodingName() {
-        if (defaultEncodingName == null) {
-            defaultEncodingName =
-                new OutputStreamWriter(new ByteArrayOutputStream()).getEncoding();
-        }
-        return defaultEncodingName;
-    }
-
-    protected String getEncodingName() {
-        String encName = options.get(OptionName.ENCODING);
-        if (encName == null)
-            return getDefaultEncodingName();
-        else
-            return encName;
-    }
-
-    protected Source getSource() {
-        String sourceName = options.get(OptionName.SOURCE);
-        Source source = null;
-        if (sourceName != null)
-            source = Source.lookup(sourceName);
-        return (source != null ? source : Source.DEFAULT);
-    }
-
-    /**
-     * Make a byte buffer from an input stream.
-     */
-    private ByteBuffer makeByteBuffer(InputStream in)
-        throws IOException {
-        int limit = in.available();
-        if (mmappedIO && in instanceof FileInputStream) {
-            // Experimental memory mapped I/O
-            FileInputStream fin = (FileInputStream)in;
-            return fin.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, limit);
-        }
-        if (limit < 1024) limit = 1024;
-        ByteBuffer result = byteBufferCache.get(limit);
-        int position = 0;
-        while (in.available() != 0) {
-            if (position >= limit)
-                // expand buffer
-                result = ByteBuffer.
-                    allocate(limit <<= 1).
-                    put((ByteBuffer)result.flip());
-            int count = in.read(result.array(),
-                position,
-                limit - position);
-            if (count < 0) break;
-            result.position(position += count);
-        }
-        return (ByteBuffer)result.flip();
-    }
-
-    /**
-     * A single-element cache of direct byte buffers.
-     */
-    private static class ByteBufferCache {
-        private ByteBuffer cached;
-        ByteBuffer get(int capacity) {
-            if (capacity < 20480) capacity = 20480;
-            ByteBuffer result =
-                (cached != null && cached.capacity() >= capacity)
-                ? (ByteBuffer)cached.clear()
-                : ByteBuffer.allocate(capacity + capacity>>1);
-            cached = null;
-            return result;
-        }
-        void put(ByteBuffer x) {
-            cached = x;
-        }
-    }
-    private final ByteBufferCache byteBufferCache;
-
-    private CharsetDecoder getDecoder(String encodingName, boolean ignoreEncodingErrors) {
-        Charset charset = (this.charset == null)
-            ? Charset.forName(encodingName)
-            : this.charset;
-        CharsetDecoder decoder = charset.newDecoder();
-
-        CodingErrorAction action;
-        if (ignoreEncodingErrors)
-            action = CodingErrorAction.REPLACE;
-        else
-            action = CodingErrorAction.REPORT;
-
-        return decoder
-            .onMalformedInput(action)
-            .onUnmappableCharacter(action);
-    }
-
-    /**
-     * Decode a ByteBuffer into a CharBuffer.
-     */
-    private CharBuffer decode(ByteBuffer inbuf, boolean ignoreEncodingErrors) {
-        String encodingName = getEncodingName();
-        CharsetDecoder decoder;
-        try {
-            decoder = getDecoder(encodingName, ignoreEncodingErrors);
-        } catch (IllegalCharsetNameException e) {
-            log.error("unsupported.encoding", encodingName);
-            return (CharBuffer)CharBuffer.allocate(1).flip();
-        } catch (UnsupportedCharsetException e) {
-            log.error("unsupported.encoding", encodingName);
-            return (CharBuffer)CharBuffer.allocate(1).flip();
-        }
-
-        // slightly overestimate the buffer size to avoid reallocation.
-        float factor =
-            decoder.averageCharsPerByte() * 0.8f +
-            decoder.maxCharsPerByte() * 0.2f;
-        CharBuffer dest = CharBuffer.
-            allocate(10 + (int)(inbuf.remaining()*factor));
-
-        while (true) {
-            CoderResult result = decoder.decode(inbuf, dest, true);
-            dest.flip();
-
-            if (result.isUnderflow()) { // done reading
-                // make sure there is at least one extra character
-                if (dest.limit() == dest.capacity()) {
-                    dest = CharBuffer.allocate(dest.capacity()+1).put(dest);
-                    dest.flip();
-                }
-                return dest;
-            } else if (result.isOverflow()) { // buffer too small; expand
-                int newCapacity =
-                    10 + dest.capacity() +
-                    (int)(inbuf.remaining()*decoder.maxCharsPerByte());
-                dest = CharBuffer.allocate(newCapacity).put(dest);
-            } else if (result.isMalformed() || result.isUnmappable()) {
-                // bad character in input
-
-                // report coding error (warn only pre 1.5)
-                if (!getSource().allowEncodingErrors()) {
-                    log.error(new SimpleDiagnosticPosition(dest.limit()),
-                              "illegal.char.for.encoding",
-                              charset == null ? encodingName : charset.name());
-                } else {
-                    log.warning(new SimpleDiagnosticPosition(dest.limit()),
-                                "illegal.char.for.encoding",
-                                charset == null ? encodingName : charset.name());
-                }
-
-                // skip past the coding error
-                inbuf.position(inbuf.position() + result.length());
-
-                // undo the flip() to prepare the output buffer
-                // for more translation
-                dest.position(dest.limit());
-                dest.limit(dest.capacity());
-                dest.put((char)0xfffd); // backward compatible
-            } else {
-                throw new AssertionError(result);
-            }
-        }
-        // unreached
-    }
-
-    public ClassLoader getClassLoader(Location location) {
-        nullCheck(location);
-        Iterable<? extends File> path = getLocation(location);
-        if (path == null)
-            return null;
-        ListBuffer<URL> lb = new ListBuffer<URL>();
-        for (File f: path) {
-            try {
-                lb.append(f.toURI().toURL());
-            } catch (MalformedURLException e) {
-                throw new AssertionError(e);
-            }
-        }
-        return new URLClassLoader(lb.toArray(new URL[lb.size()]),
-            getClass().getClassLoader());
-    }
-
-    public Iterable<JavaFileObject> list(Location location,
-                                         String packageName,
-                                         Set<JavaFileObject.Kind> kinds,
-                                         boolean recurse)
-        throws IOException
-    {
-        // validatePackageName(packageName);
-        nullCheck(packageName);
-        nullCheck(kinds);
-
-        Iterable<? extends File> path = getLocation(location);
-        if (path == null)
-            return List.nil();
-        String subdirectory = externalizeFileName(packageName);
-        ListBuffer<JavaFileObject> results = new ListBuffer<JavaFileObject>();
-
-        for (File directory : path)
-            listDirectory(directory, subdirectory, kinds, recurse, results);
-
-        return results.toList();
-    }
-
-    public String inferBinaryName(Location location, JavaFileObject file) {
-        file.getClass(); // null check
-        location.getClass(); // null check
-        // Need to match the path semantics of list(location, ...)
-        Iterable<? extends File> path = getLocation(location);
-        if (path == null) {
-            //System.err.println("Path for " + location + " is null");
-            return null;
-        }
-        //System.err.println("Path for " + location + " is " + path);
-
-        if (file instanceof RegularFileObject) {
-            RegularFileObject r = (RegularFileObject) file;
-            String rPath = r.getPath();
-            //System.err.println("RegularFileObject " + file + " " +r.getPath());
-            for (File dir: path) {
-                //System.err.println("dir: " + dir);
-                String dPath = dir.getPath();
-                if (!dPath.endsWith(File.separator))
-                    dPath += File.separator;
-                if (rPath.regionMatches(true, 0, dPath, 0, dPath.length())
-                    && new File(rPath.substring(0, dPath.length())).equals(new File(dPath))) {
-                    String relativeName = rPath.substring(dPath.length());
-                    return removeExtension(relativeName).replace(File.separatorChar, '.');
-                }
-            }
-        } else if (file instanceof ZipFileObject) {
-            ZipFileObject z = (ZipFileObject) file;
-            String entryName = z.getZipEntryName();
-            if (entryName.startsWith(symbolFilePrefix))
-                entryName = entryName.substring(symbolFilePrefix.length());
-            return removeExtension(entryName).replace('/', '.');
-        } else if (file instanceof ZipFileIndexFileObject) {
-            ZipFileIndexFileObject z = (ZipFileIndexFileObject) file;
-            String entryName = z.getZipEntryName();
-            if (entryName.startsWith(symbolFilePrefix))
-                entryName = entryName.substring(symbolFilePrefix.length());
-            return removeExtension(entryName).replace(File.separatorChar, '.');
-        } else
-            throw new IllegalArgumentException(file.getClass().getName());
-        // System.err.println("inferBinaryName failed for " + file);
-        return null;
-    }
-    // where
-        private static String removeExtension(String fileName) {
-            int lastDot = fileName.lastIndexOf(".");
-            return (lastDot == -1 ? fileName : fileName.substring(0, lastDot));
-        }
-
-    public boolean isSameFile(FileObject a, FileObject b) {
-        nullCheck(a);
-        nullCheck(b);
-        if (!(a instanceof BaseFileObject))
-            throw new IllegalArgumentException("Not supported: " + a);
-        if (!(b instanceof BaseFileObject))
-            throw new IllegalArgumentException("Not supported: " + b);
-        return a.equals(b);
-    }
-
-    public boolean handleOption(String current, Iterator<String> remaining) {
-        for (JavacOption o: javacFileManagerOptions) {
-            if (o.matches(current))  {
-                if (o.hasArg()) {
-                    if (remaining.hasNext()) {
-                        if (!o.process(options, current, remaining.next()))
-                            return true;
-                    }
-                } else {
-                    if (!o.process(options, current))
-                        return true;
-                }
-                // operand missing, or process returned false
-                throw new IllegalArgumentException(current);
-            }
-        }
-
-        return false;
-    }
-    // where
-        private static JavacOption[] javacFileManagerOptions =
-            RecognizedOptions.getJavacFileManagerOptions(
-            new RecognizedOptions.GrumpyHelper());
-
-    public int isSupportedOption(String option) {
-        for (JavacOption o : javacFileManagerOptions) {
-            if (o.matches(option))
-                return o.hasArg() ? 1 : 0;
-        }
-        return -1;
-    }
-
-    public boolean hasLocation(Location location) {
-        return getLocation(location) != null;
-    }
-
-    public JavaFileObject getJavaFileForInput(Location location,
-                                              String className,
-                                              JavaFileObject.Kind kind)
-        throws IOException
-    {
-        nullCheck(location);
-        // validateClassName(className);
-        nullCheck(className);
-        nullCheck(kind);
-        if (!sourceOrClass.contains(kind))
-            throw new IllegalArgumentException("Invalid kind " + kind);
-        return getFileForInput(location, externalizeFileName(className, kind));
-    }
-
-    public FileObject getFileForInput(Location location,
-                                      String packageName,
-                                      String relativeName)
-        throws IOException
-    {
-        nullCheck(location);
-        // validatePackageName(packageName);
-        nullCheck(packageName);
-        if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701
-            throw new IllegalArgumentException("Invalid relative name: " + relativeName);
-        String name = packageName.length() == 0
-            ? relativeName
-            : new File(externalizeFileName(packageName), relativeName).getPath();
-        return getFileForInput(location, name);
-    }
-
-    private JavaFileObject getFileForInput(Location location, String name) throws IOException {
-        Iterable<? extends File> path = getLocation(location);
-        if (path == null)
-            return null;
-
-        for (File dir: path) {
-            if (dir.isDirectory()) {
-                File f = new File(dir, name.replace('/', File.separatorChar));
-                if (f.exists())
-                    return new RegularFileObject(f);
-            } else {
-                Archive a = openArchive(dir);
-                if (a.contains(name)) {
-                    int i = name.lastIndexOf('/');
-                    String dirname = name.substring(0, i+1);
-                    String basename = name.substring(i+1);
-                    return a.getFileObject(dirname, basename);
-                }
-
-            }
-        }
-        return null;
-
-    }
-
-    public JavaFileObject getJavaFileForOutput(Location location,
-                                               String className,
-                                               JavaFileObject.Kind kind,
-                                               FileObject sibling)
-        throws IOException
-    {
-        nullCheck(location);
-        // validateClassName(className);
-        nullCheck(className);
-        nullCheck(kind);
-        if (!sourceOrClass.contains(kind))
-            throw new IllegalArgumentException("Invalid kind " + kind);
-        return getFileForOutput(location, externalizeFileName(className, kind), sibling);
-    }
-
-    public FileObject getFileForOutput(Location location,
-                                       String packageName,
-                                       String relativeName,
-                                       FileObject sibling)
-        throws IOException
-    {
-        nullCheck(location);
-        // validatePackageName(packageName);
-        nullCheck(packageName);
-        if (!isRelativeUri(URI.create(relativeName))) // FIXME 6419701
-            throw new IllegalArgumentException("relativeName is invalid");
-        String name = packageName.length() == 0
-            ? relativeName
-            : new File(externalizeFileName(packageName), relativeName).getPath();
-        return getFileForOutput(location, name, sibling);
-    }
-
-    private JavaFileObject getFileForOutput(Location location,
-                                            String fileName,
-                                            FileObject sibling)
-        throws IOException
-    {
-        File dir;
-        if (location == CLASS_OUTPUT) {
-            if (getClassOutDir() != null) {
-                dir = getClassOutDir();
-            } else {
-                File siblingDir = null;
-                if (sibling != null && sibling instanceof RegularFileObject) {
-                    siblingDir = ((RegularFileObject)sibling).f.getParentFile();
-                }
-                return new RegularFileObject(new File(siblingDir, baseName(fileName)));
-            }
-        } else if (location == SOURCE_OUTPUT) {
-            dir = (getSourceOutDir() != null ? getSourceOutDir() : getClassOutDir());
-        } else {
-            Iterable<? extends File> path = paths.getPathForLocation(location);
-            dir = null;
-            for (File f: path) {
-                dir = f;
-                break;
-            }
-        }
-
-        File file = (dir == null ? new File(fileName) : new File(dir, fileName));
-        return new RegularFileObject(file);
-
-    }
-
-    public Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(
-        Iterable<? extends File> files)
-    {
-        ArrayList<RegularFileObject> result;
-        if (files instanceof Collection)
-            result = new ArrayList<RegularFileObject>(((Collection)files).size());
-        else
-            result = new ArrayList<RegularFileObject>();
-        for (File f: files)
-            result.add(new RegularFileObject(nullCheck(f)));
-        return result;
-    }
-
-    public Iterable<? extends JavaFileObject> getJavaFileObjects(File... files) {
-        return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files)));
-    }
-
-    public void setLocation(Location location,
-                            Iterable<? extends File> path)
-        throws IOException
-    {
-        nullCheck(location);
-        paths.lazy();
-
-        final File dir = location.isOutputLocation() ? getOutputDirectory(path) : null;
-
-        if (location == CLASS_OUTPUT)
-            classOutDir = getOutputLocation(dir, D);
-        else if (location == SOURCE_OUTPUT)
-            sourceOutDir = getOutputLocation(dir, S);
-        else
-            paths.setPathForLocation(location, path);
-    }
-    // where
-        private File getOutputDirectory(Iterable<? extends File> path) throws IOException {
-            if (path == null)
-                return null;
-            Iterator<? extends File> pathIter = path.iterator();
-            if (!pathIter.hasNext())
-                throw new IllegalArgumentException("empty path for directory");
-            File dir = pathIter.next();
-            if (pathIter.hasNext())
-                throw new IllegalArgumentException("path too long for directory");
-            if (!dir.exists())
-                throw new FileNotFoundException(dir + ": does not exist");
-            else if (!dir.isDirectory())
-                throw new IOException(dir + ": not a directory");
-            return dir;
-        }
-
-    private File getOutputLocation(File dir, OptionName defaultOptionName) {
-        if (dir != null)
-            return dir;
-        String arg = options.get(defaultOptionName);
-        if (arg == null)
-            return null;
-        return new File(arg);
-    }
-
-    public Iterable<? extends File> getLocation(Location location) {
-        nullCheck(location);
-        paths.lazy();
-        if (location == CLASS_OUTPUT) {
-            return (getClassOutDir() == null ? null : List.of(getClassOutDir()));
-        } else if (location == SOURCE_OUTPUT) {
-            return (getSourceOutDir() == null ? null : List.of(getSourceOutDir()));
-        } else
-            return paths.getPathForLocation(location);
-    }
-
-    private File getClassOutDir() {
-        if (classOutDir == uninited)
-            classOutDir = getOutputLocation(null, D);
-        return classOutDir;
-    }
-
-    private File getSourceOutDir() {
-        if (sourceOutDir == uninited)
-            sourceOutDir = getOutputLocation(null, S);
-        return sourceOutDir;
-    }
-
-    /**
-     * Enforces the specification of a "relative" URI as used in
-     * {@linkplain #getFileForInput(Location,String,URI)
-     * getFileForInput}.  This method must follow the rules defined in
-     * that method, do not make any changes without consulting the
-     * specification.
-     */
-    protected static boolean isRelativeUri(URI uri) {
-        if (uri.isAbsolute())
-            return false;
-        String path = uri.normalize().getPath();
-        if (path.length() == 0 /* isEmpty() is mustang API */)
-            return false;
-        char first = path.charAt(0);
-        return first != '.' && first != '/';
-    }
-
-    /**
-     * Converts a relative file name to a relative URI.  This is
-     * different from File.toURI as this method does not canonicalize
-     * the file before creating the URI.  Furthermore, no schema is
-     * used.
-     * @param file a relative file name
-     * @return a relative URI
-     * @throws IllegalArgumentException if the file name is not
-     * relative according to the definition given in {@link
-     * javax.tools.JavaFileManager#getFileForInput}
-     */
-    public static String getRelativeName(File file) {
-        if (!file.isAbsolute()) {
-            String result = file.getPath().replace(File.separatorChar, '/');
-            if (JavacFileManager.isRelativeUri(URI.create(result))) // FIXME 6419701
-                return result;
-        }
-        throw new IllegalArgumentException("Invalid relative path: " + file);
-    }
-
-    @SuppressWarnings("deprecation") // bug 6410637
-    protected static String getJavacFileName(FileObject file) {
-        if (file instanceof BaseFileObject)
-            return ((BaseFileObject)file).getPath();
-        URI uri = file.toUri();
-        String scheme = uri.getScheme();
-        if (scheme == null || scheme.equals("file") || scheme.equals("jar"))
-            return uri.getPath();
-        else
-            return uri.toString();
-    }
-
-    @SuppressWarnings("deprecation") // bug 6410637
-    protected static String getJavacBaseFileName(FileObject file) {
-        if (file instanceof BaseFileObject)
-            return ((BaseFileObject)file).getName();
-        URI uri = file.toUri();
-        String scheme = uri.getScheme();
-        if (scheme == null || scheme.equals("file") || scheme.equals("jar")) {
-            String path = uri.getPath();
-            if (path == null)
-                return null;
-            if (scheme != null && scheme.equals("jar"))
-                path = path.substring(path.lastIndexOf('!') + 1);
-            return path.substring(path.lastIndexOf('/') + 1);
-        } else {
-            return uri.toString();
-        }
-    }
-
-    private static <T> T nullCheck(T o) {
-        o.getClass(); // null check
-        return o;
-    }
-
-    private static <T> Iterable<T> nullCheck(Iterable<T> it) {
-        for (T t : it)
-            t.getClass(); // null check
-        return it;
-    }
-
-    /**
-     * A subclass of JavaFileObject representing regular files.
-     */
-    private class RegularFileObject extends BaseFileObject {
-        /** Have the parent directories been created?
-         */
-        private boolean hasParents=false;
-
-        /** The file's name.
-         */
-        private String name;
-
-        /** The underlying file.
-         */
-        final File f;
-
-        public RegularFileObject(File f) {
-            this(f.getName(), f);
-        }
-
-        public RegularFileObject(String name, File f) {
-            if (f.isDirectory())
-                throw new IllegalArgumentException("directories not supported");
-            this.name = name;
-            this.f = f;
-        }
-
-        public InputStream openInputStream() throws IOException {
-            return new FileInputStream(f);
-        }
-
-        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
-            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
-        }
-
-        public OutputStream openOutputStream() throws IOException {
-            ensureParentDirectoriesExist();
-            return new FileOutputStream(f);
-        }
-
-        public Writer openWriter() throws IOException {
-            ensureParentDirectoriesExist();
-            return new OutputStreamWriter(new FileOutputStream(f), getEncodingName());
-        }
-
-        private void ensureParentDirectoriesExist() throws IOException {
-            if (!hasParents) {
-                File parent = f.getParentFile();
-                if (parent != null && !parent.exists()) {
-                    if (!parent.mkdirs()) {
-                        // if the mkdirs failed, it may be because another process concurrently
-                        // created the directory, so check if the directory got created
-                        // anyway before throwing an exception
-                        if (!parent.exists() || !parent.isDirectory())
-                            throw new IOException("could not create parent directories");
-                    }
-                }
-                hasParents = true;
-            }
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getName() {
-            return name;
-        }
-
-        public boolean isNameCompatible(String cn, JavaFileObject.Kind kind) {
-            cn.getClass(); // null check
-            if (kind == Kind.OTHER && getKind() != kind)
-                return false;
-            String n = cn + kind.extension;
-            if (name.equals(n))
-                return true;
-            if (name.equalsIgnoreCase(n)) {
-                try {
-                    // allow for Windows
-                    return (f.getCanonicalFile().getName().equals(n));
-                } catch (IOException e) {
-                }
-            }
-            return false;
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getPath() {
-            return f.getPath();
-        }
-
-        public long getLastModified() {
-            return f.lastModified();
-        }
-
-        public boolean delete() {
-            return f.delete();
-        }
-
-        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
-            SoftReference<CharBuffer> r = contentCache.get(this);
-            CharBuffer cb = (r == null ? null : r.get());
-            if (cb == null) {
-                InputStream in = new FileInputStream(f);
-                try {
-                    ByteBuffer bb = makeByteBuffer(in);
-                    JavaFileObject prev = log.useSource(this);
-                    try {
-                        cb = decode(bb, ignoreEncodingErrors);
-                    } finally {
-                        log.useSource(prev);
-                    }
-                    byteBufferCache.put(bb); // save for next time
-                    if (!ignoreEncodingErrors)
-                        contentCache.put(this, new SoftReference<CharBuffer>(cb));
-                } finally {
-                    in.close();
-                }
-            }
-            return cb;
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof RegularFileObject))
-                return false;
-            RegularFileObject o = (RegularFileObject) other;
-            try {
-                return f.equals(o.f)
-                    || f.getCanonicalFile().equals(o.f.getCanonicalFile());
-            } catch (IOException e) {
-                return false;
-            }
-        }
-
-        @Override
-        public int hashCode() {
-            return f.hashCode();
-        }
-
-        public URI toUri() {
-            try {
-                // Do no use File.toURI to avoid file system access
-                String path = f.getAbsolutePath().replace(File.separatorChar, '/');
-                return new URI("file://" + path).normalize();
-            } catch (URISyntaxException ex) {
-                return f.toURI();
-            }
-        }
-
-    }
-
-    /**
-     * A subclass of JavaFileObject representing zip entries.
-     */
-    public class ZipFileObject extends BaseFileObject {
-
-        /** The entry's name.
-         */
-        private String name;
-
-        /** The zipfile containing the entry.
-         */
-        ZipFile zdir;
-
-        /** The underlying zip entry object.
-         */
-        ZipEntry entry;
-
-        public ZipFileObject(String name, ZipFile zdir, ZipEntry entry) {
-            this.name = name;
-            this.zdir = zdir;
-            this.entry = entry;
-        }
-
-        public InputStream openInputStream() throws IOException {
-            return zdir.getInputStream(entry);
-        }
-
-        public OutputStream openOutputStream() throws IOException {
-            throw new UnsupportedOperationException();
-        }
-
-        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
-            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
-        }
-
-        public Writer openWriter() throws IOException {
-            throw new UnsupportedOperationException();
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getName() {
-            return name;
-        }
-
-        public boolean isNameCompatible(String cn, JavaFileObject.Kind k) {
-            cn.getClass(); // null check
-            if (k == Kind.OTHER && getKind() != k)
-                return false;
-            return name.equals(cn + k.extension);
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getPath() {
-            return zdir.getName() + "(" + entry + ")";
-        }
-
-        public long getLastModified() {
-            return entry.getTime();
-        }
-
-        public boolean delete() {
-            throw new UnsupportedOperationException();
-        }
-
-        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
-            SoftReference<CharBuffer> r = contentCache.get(this);
-            CharBuffer cb = (r == null ? null : r.get());
-            if (cb == null) {
-                InputStream in = zdir.getInputStream(entry);
-                try {
-                    ByteBuffer bb = makeByteBuffer(in);
-                    JavaFileObject prev = log.useSource(this);
-                    try {
-                        cb = decode(bb, ignoreEncodingErrors);
-                    } finally {
-                        log.useSource(prev);
-                    }
-                    byteBufferCache.put(bb); // save for next time
-                    if (!ignoreEncodingErrors)
-                        contentCache.put(this, new SoftReference<CharBuffer>(cb));
-                } finally {
-                    in.close();
-                }
-            }
-            return cb;
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof ZipFileObject))
-                return false;
-            ZipFileObject o = (ZipFileObject) other;
-            return zdir.equals(o.zdir) || name.equals(o.name);
-        }
-
-        @Override
-        public int hashCode() {
-            return zdir.hashCode() + name.hashCode();
-        }
-
-        public String getZipName() {
-            return zdir.getName();
-        }
-
-        public String getZipEntryName() {
-            return entry.getName();
-        }
-
-        public URI toUri() {
-            String zipName = new File(getZipName()).toURI().normalize().getPath();
-            String entryName = getZipEntryName();
-            return URI.create("jar:" + zipName + "!" + entryName);
-        }
-
-    }
-
-    /**
-     * A subclass of JavaFileObject representing zip entries using the com.sun.tools.javac.zip.ZipFileIndex implementation.
-     */
-    public class ZipFileIndexFileObject extends BaseFileObject {
-
-            /** The entry's name.
-         */
-        private String name;
-
-        /** The zipfile containing the entry.
-         */
-        ZipFileIndex zfIndex;
-
-        /** The underlying zip entry object.
-         */
-        ZipFileIndexEntry entry;
-
-        /** The InputStream for this zip entry (file.)
-         */
-        InputStream inputStream = null;
-
-        /** The name of the zip file where this entry resides.
-         */
-        String zipName;
-
-        JavacFileManager defFileManager = null;
-
-        public ZipFileIndexFileObject(JavacFileManager fileManager, ZipFileIndex zfIndex, ZipFileIndexEntry entry, String zipFileName) {
-            super();
-            this.name = entry.getFileName();
-            this.zfIndex = zfIndex;
-            this.entry = entry;
-            this.zipName = zipFileName;
-            defFileManager = fileManager;
-        }
-
-        public InputStream openInputStream() throws IOException {
-
-            if (inputStream == null) {
-                inputStream = new ByteArrayInputStream(read());
-            }
-            return inputStream;
-        }
-
-        protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
-            return JavacFileManager.this.getDecoder(getEncodingName(), ignoreEncodingErrors);
-        }
-
-        public OutputStream openOutputStream() throws IOException {
-            throw new UnsupportedOperationException();
-        }
-
-        public Writer openWriter() throws IOException {
-            throw new UnsupportedOperationException();
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getName() {
-            return name;
-        }
-
-        public boolean isNameCompatible(String cn, JavaFileObject.Kind k) {
-            cn.getClass(); // null check
-            if (k == Kind.OTHER && getKind() != k)
-                return false;
-            return name.equals(cn + k.extension);
-        }
-
-        /** @deprecated see bug 6410637 */
-        @Deprecated
-        public String getPath() {
-            return zipName + "(" + entry.getName() + ")";
-        }
-
-        public long getLastModified() {
-            return entry.getLastModified();
-        }
-
-        public boolean delete() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public boolean equals(Object other) {
-            if (!(other instanceof ZipFileIndexFileObject))
-                return false;
-            ZipFileIndexFileObject o = (ZipFileIndexFileObject) other;
-            return entry.equals(o.entry);
-        }
-
-        @Override
-        public int hashCode() {
-            return zipName.hashCode() + (name.hashCode() << 10);
-        }
-
-        public String getZipName() {
-            return zipName;
-        }
-
-        public String getZipEntryName() {
-            return entry.getName();
-        }
-
-        public URI toUri() {
-            String zipName = new File(getZipName()).toURI().normalize().getPath();
-            String entryName = getZipEntryName();
-            if (File.separatorChar != '/') {
-                entryName = entryName.replace(File.separatorChar, '/');
-            }
-            return URI.create("jar:" + zipName + "!" + entryName);
-        }
-
-        private byte[] read() throws IOException {
-            if (entry == null) {
-                entry = zfIndex.getZipIndexEntry(name);
-                if (entry == null)
-                  throw new FileNotFoundException();
-            }
-            return zfIndex.read(entry);
-        }
-
-        public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException {
-            SoftReference<CharBuffer> r = defFileManager.contentCache.get(this);
-            CharBuffer cb = (r == null ? null : r.get());
-            if (cb == null) {
-                InputStream in = new ByteArrayInputStream(zfIndex.read(entry));
-                try {
-                    ByteBuffer bb = makeByteBuffer(in);
-                    JavaFileObject prev = log.useSource(this);
-                    try {
-                        cb = decode(bb, ignoreEncodingErrors);
-                    } finally {
-                        log.useSource(prev);
-                    }
-                    byteBufferCache.put(bb); // save for next time
-                    if (!ignoreEncodingErrors)
-                        defFileManager.contentCache.put(this, new SoftReference<CharBuffer>(cb));
-                } finally {
-                    in.close();
-                }
-            }
-            return cb;
-        }
-    }
-
-    public class ZipFileIndexArchive implements Archive {
-        private final ZipFileIndex zfIndex;
-        private JavacFileManager fileManager;
-
-        public ZipFileIndexArchive(JavacFileManager fileManager, ZipFileIndex zdir) throws IOException {
-            this.fileManager = fileManager;
-            this.zfIndex = zdir;
-        }
-
-        public boolean contains(String name) {
-            return zfIndex.contains(name);
-        }
-
-        public com.sun.tools.javac.util.List<String> getFiles(String subdirectory) {
-              return zfIndex.getFiles(((subdirectory.endsWith("/") || subdirectory.endsWith("\\"))? subdirectory.substring(0, subdirectory.length() - 1) : subdirectory));
-        }
-
-        public JavaFileObject getFileObject(String subdirectory, String file) {
-            String fullZipFileName = subdirectory + file;
-            ZipFileIndexEntry entry = zfIndex.getZipIndexEntry(fullZipFileName);
-            JavaFileObject ret = new ZipFileIndexFileObject(fileManager, zfIndex, entry, zfIndex.getZipFile().getPath());
-            return ret;
-        }
-
-        public Set<String> getSubdirectories() {
-            return zfIndex.getAllDirectories();
-        }
-
-        public void close() throws IOException {
-            zfIndex.close();
-        }
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -33,11 +33,14 @@
 import java.util.Set;
 import javax.tools.DiagnosticListener;
 import javax.tools.JavaFileObject;
+
 import com.sun.tools.javac.code.Source;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
 import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition;
+
 import static com.sun.tools.javac.util.LayoutCharacters.*;
 
 /** A class for error logs. Reports errors and warnings, and
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Old199.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +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 com.sun.tools.javac.util;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import javax.tools.*;
-
-import static javax.tools.StandardLocation.SOURCE_PATH;
-
-/**
- * Provides an easy migration to JSR 199 v3.3.  The class is
- * deprecated as we should remove it as soon as possible.
- *
- * <p><b>This is NOT part of any API supported by Sun Microsystems.
- * If you write code that depends on this, you do so at your own
- * risk.  This code and its internal interfaces are subject to change
- * or deletion without notice.</b></p>
- *
- * @author Peter von der Ah\u00e9
- */
-@Deprecated
-public class Old199 {
-
-    private Old199() {}
-
-    public static String getPath(FileObject jfo) {
-        return JavacFileManager.getJavacFileName(jfo);
-    }
-
-    public static String getName(FileObject jfo) {
-        return JavacFileManager.getJavacBaseFileName(jfo);
-    }
-
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Paths.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,572 +0,0 @@
-/*
- * Copyright 2003-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 com.sun.tools.javac.util;
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-import java.util.jar.Attributes;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.zip.ZipFile;
-import com.sun.tools.javac.code.Lint;
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-import javax.tools.JavaFileManager.Location;
-
-import static com.sun.tools.javac.main.OptionName.*;
-import static javax.tools.StandardLocation.*;
-
-/** This class converts command line arguments, environment variables
- *  and system properties (in File.pathSeparator-separated String form)
- *  into a boot class path, user class path, and source path (in
- *  Collection<String> form).
- *
- *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
- *  you write code that depends on this, you do so at your own risk.
- *  This code and its internal interfaces are subject to change or
- *  deletion without notice.</b>
- */
-public class Paths {
-
-    /** The context key for the todo list */
-    protected static final Context.Key<Paths> pathsKey =
-        new Context.Key<Paths>();
-
-    /** Get the Paths instance for this context.
-     *  @param context the context
-     *  @return the Paths instance for this context
-     */
-    public static Paths instance(Context context) {
-        Paths instance = context.get(pathsKey);
-        if (instance == null)
-            instance = new Paths(context);
-        return instance;
-    }
-
-    /** The log to use for warning output */
-    private Log log;
-
-    /** Collection of command-line options */
-    private Options options;
-
-    /** Handler for -Xlint options */
-    private Lint lint;
-
-    private static boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this.
-    private static Map<File, PathEntry> pathExistanceCache = new ConcurrentHashMap<File, PathEntry>();
-    private static Map<File, java.util.List<File>> manifestEntries = new ConcurrentHashMap<File, java.util.List<File>>();
-    private static Map<File, Boolean> isDirectory = new ConcurrentHashMap<File, Boolean>();
-    private static Lock lock = new ReentrantLock();
-
-    public static void clearPathExistanceCache() {
-            pathExistanceCache.clear();
-    }
-
-    static class PathEntry {
-        boolean exists = false;
-        boolean isFile = false;
-        File cannonicalPath = null;
-    }
-
-    protected Paths(Context context) {
-        context.put(pathsKey, this);
-        pathsForLocation = new HashMap<Location,Path>(16);
-        setContext(context);
-    }
-
-    void setContext(Context context) {
-        log = Log.instance(context);
-        options = Options.instance(context);
-        lint = Lint.instance(context);
-    }
-
-    /** Whether to warn about non-existent path elements */
-    private boolean warn;
-
-    private Map<Location, Path> pathsForLocation;
-
-    private boolean inited = false; // TODO? caching bad?
-
-    /**
-     * rt.jar as found on the default bootclass path.  If the user specified a
-     * bootclasspath, null is used.
-     */
-    private File bootClassPathRtJar = null;
-
-    Path getPathForLocation(Location location) {
-        Path path = pathsForLocation.get(location);
-        if (path == null)
-            setPathForLocation(location, null);
-        return pathsForLocation.get(location);
-    }
-
-    void setPathForLocation(Location location, Iterable<? extends File> path) {
-        // TODO? if (inited) throw new IllegalStateException
-        // TODO: otherwise reset sourceSearchPath, classSearchPath as needed
-        Path p;
-        if (path == null) {
-            if (location == CLASS_PATH)
-                p = computeUserClassPath();
-            else if (location == PLATFORM_CLASS_PATH)
-                p = computeBootClassPath();
-            else if (location == ANNOTATION_PROCESSOR_PATH)
-                p = computeAnnotationProcessorPath();
-            else if (location == SOURCE_PATH)
-                p = computeSourcePath();
-            else
-                // no defaults for other paths
-                p = null;
-        } else {
-            p = new Path();
-            for (File f: path)
-                p.addFile(f, warn); // TODO: is use of warn appropriate?
-        }
-        pathsForLocation.put(location, p);
-    }
-
-    protected void lazy() {
-        if (!inited) {
-            warn = lint.isEnabled(Lint.LintCategory.PATH);
-
-            pathsForLocation.put(PLATFORM_CLASS_PATH, computeBootClassPath());
-            pathsForLocation.put(CLASS_PATH, computeUserClassPath());
-            pathsForLocation.put(SOURCE_PATH, computeSourcePath());
-
-            inited = true;
-        }
-    }
-
-    public Collection<File> bootClassPath() {
-        lazy();
-        return Collections.unmodifiableCollection(getPathForLocation(PLATFORM_CLASS_PATH));
-    }
-    public Collection<File> userClassPath() {
-        lazy();
-        return Collections.unmodifiableCollection(getPathForLocation(CLASS_PATH));
-    }
-    public Collection<File> sourcePath() {
-        lazy();
-        Path p = getPathForLocation(SOURCE_PATH);
-        return p == null || p.size() == 0
-            ? null
-            : Collections.unmodifiableCollection(p);
-    }
-
-    boolean isBootClassPathRtJar(File file) {
-        return file.equals(bootClassPathRtJar);
-    }
-
-    private static class PathIterator implements Iterable<String> {
-        private int pos = 0;
-        private final String path;
-        private final String emptyPathDefault;
-
-        public PathIterator(String path, String emptyPathDefault) {
-            this.path = path;
-            this.emptyPathDefault = emptyPathDefault;
-        }
-        public PathIterator(String path) { this(path, null); }
-        public Iterator<String> iterator() {
-            return new Iterator<String>() {
-                public boolean hasNext() {
-                    return pos <= path.length();
-                }
-                public String next() {
-                    int beg = pos;
-                    int end = path.indexOf(File.pathSeparator, beg);
-                    if (end == -1)
-                        end = path.length();
-                    pos = end + 1;
-
-                    if (beg == end && emptyPathDefault != null)
-                        return emptyPathDefault;
-                    else
-                        return path.substring(beg, end);
-                }
-                public void remove() {
-                    throw new UnsupportedOperationException();
-                }
-            };
-        }
-    }
-
-    private class Path extends LinkedHashSet<File> {
-        private static final long serialVersionUID = 0;
-
-        private boolean expandJarClassPaths = false;
-        private Set<File> canonicalValues = new HashSet<File>();
-
-        public Path expandJarClassPaths(boolean x) {
-            expandJarClassPaths = x;
-            return this;
-        }
-
-        /** What to use when path element is the empty string */
-        private String emptyPathDefault = null;
-
-        public Path emptyPathDefault(String x) {
-            emptyPathDefault = x;
-            return this;
-        }
-
-        public Path() { super(); }
-
-        public Path addDirectories(String dirs, boolean warn) {
-            if (dirs != null)
-                for (String dir : new PathIterator(dirs))
-                    addDirectory(dir, warn);
-            return this;
-        }
-
-        public Path addDirectories(String dirs) {
-            return addDirectories(dirs, warn);
-        }
-
-        private void addDirectory(String dir, boolean warn) {
-            if (! new File(dir).isDirectory()) {
-                if (warn)
-                    log.warning("dir.path.element.not.found", dir);
-                return;
-            }
-
-            File[] files = new File(dir).listFiles();
-            if (files == null)
-                return;
-
-            for (File direntry : files) {
-                if (isArchive(direntry))
-                    addFile(direntry, warn);
-            }
-        }
-
-        public Path addFiles(String files, boolean warn) {
-            if (files != null)
-                for (String file : new PathIterator(files, emptyPathDefault))
-                    addFile(file, warn);
-            return this;
-        }
-
-        public Path addFiles(String files) {
-            return addFiles(files, warn);
-        }
-
-        public Path addFile(String file, boolean warn) {
-            addFile(new File(file), warn);
-            return this;
-        }
-
-        public void addFile(File file, boolean warn) {
-            boolean foundInCache = false;
-            PathEntry pe = null;
-            if (!NON_BATCH_MODE) {
-                    pe = pathExistanceCache.get(file);
-                    if (pe != null) {
-                        foundInCache = true;
-                    }
-                    else {
-                        pe = new PathEntry();
-                    }
-            }
-            else {
-                pe = new PathEntry();
-            }
-
-            File canonFile;
-            try {
-                if (!foundInCache) {
-                    pe.cannonicalPath = file.getCanonicalFile();
-                }
-                else {
-                   canonFile = pe.cannonicalPath;
-                }
-            } catch (IOException e) {
-                pe.cannonicalPath = canonFile = file;
-            }
-
-            if (contains(file) || canonicalValues.contains(pe.cannonicalPath)) {
-                /* Discard duplicates and avoid infinite recursion */
-                return;
-            }
-
-            if (!foundInCache) {
-                pe.exists = file.exists();
-                pe.isFile = file.isFile();
-                if (!NON_BATCH_MODE) {
-                    pathExistanceCache.put(file, pe);
-                }
-            }
-
-            if (! pe.exists) {
-                /* No such file or directory exists */
-                if (warn)
-                    log.warning("path.element.not.found", file);
-            } else if (pe.isFile) {
-                /* File is an ordinary file. */
-                if (!isArchive(file)) {
-                    /* Not a recognized extension; open it to see if
-                     it looks like a valid zip file. */
-                    try {
-                        ZipFile z = new ZipFile(file);
-                        z.close();
-                        if (warn)
-                            log.warning("unexpected.archive.file", file);
-                    } catch (IOException e) {
-                        // FIXME: include e.getLocalizedMessage in warning
-                        if (warn)
-                            log.warning("invalid.archive.file", file);
-                        return;
-                    }
-                }
-            }
-
-            /* Now what we have left is either a directory or a file name
-               confirming to archive naming convention */
-            super.add(file);
-            canonicalValues.add(pe.cannonicalPath);
-
-            if (expandJarClassPaths && file.exists() && file.isFile())
-                addJarClassPath(file, warn);
-        }
-
-        // Adds referenced classpath elements from a jar's Class-Path
-        // Manifest entry.  In some future release, we may want to
-        // update this code to recognize URLs rather than simple
-        // filenames, but if we do, we should redo all path-related code.
-        private void addJarClassPath(File jarFile, boolean warn) {
-            try {
-                java.util.List<File> manifestsList = manifestEntries.get(jarFile);
-                if (!NON_BATCH_MODE) {
-                    lock.lock();
-                    try {
-                        if (manifestsList != null) {
-                            for (File entr : manifestsList) {
-                                addFile(entr, warn);
-                            }
-                            return;
-                        }
-                    }
-                    finally {
-                        lock.unlock();
-                    }
-                }
-
-                if (!NON_BATCH_MODE) {
-                    manifestsList = new ArrayList<File>();
-                    manifestEntries.put(jarFile, manifestsList);
-                }
-
-                String jarParent = jarFile.getParent();
-                JarFile jar = new JarFile(jarFile);
-
-                try {
-                    Manifest man = jar.getManifest();
-                    if (man == null) return;
-
-                    Attributes attr = man.getMainAttributes();
-                    if (attr == null) return;
-
-                    String path = attr.getValue(Attributes.Name.CLASS_PATH);
-                    if (path == null) return;
-
-                    for (StringTokenizer st = new StringTokenizer(path);
-                         st.hasMoreTokens();) {
-                        String elt = st.nextToken();
-                        File f = (jarParent == null ? new File(elt) : new File(jarParent, elt));
-                        addFile(f, warn);
-
-                        if (!NON_BATCH_MODE) {
-                            lock.lock();
-                            try {
-                                manifestsList.add(f);
-                            }
-                            finally {
-                                lock.unlock();
-                            }
-                        }
-                    }
-                } finally {
-                    jar.close();
-                }
-            } catch (IOException e) {
-                log.error("error.reading.file", jarFile, e.getLocalizedMessage());
-            }
-        }
-    }
-
-    private Path computeBootClassPath() {
-        bootClassPathRtJar = null;
-        String optionValue;
-        Path path = new Path();
-
-        path.addFiles(options.get(XBOOTCLASSPATH_PREPEND));
-
-        if ((optionValue = options.get(ENDORSEDDIRS)) != null)
-            path.addDirectories(optionValue);
-        else
-            path.addDirectories(System.getProperty("java.endorsed.dirs"), false);
-
-        if ((optionValue = options.get(BOOTCLASSPATH)) != null) {
-            path.addFiles(optionValue);
-        } else {
-            // Standard system classes for this compiler's release.
-            String files = System.getProperty("sun.boot.class.path");
-            path.addFiles(files, false);
-            File rt_jar = new File("rt.jar");
-            for (String file : new PathIterator(files, null)) {
-                File f = new File(file);
-                if (new File(f.getName()).equals(rt_jar))
-                    bootClassPathRtJar = f;
-            }
-        }
-
-        path.addFiles(options.get(XBOOTCLASSPATH_APPEND));
-
-        // Strictly speaking, standard extensions are not bootstrap
-        // classes, but we treat them identically, so we'll pretend
-        // that they are.
-        if ((optionValue = options.get(EXTDIRS)) != null)
-            path.addDirectories(optionValue);
-        else
-            path.addDirectories(System.getProperty("java.ext.dirs"), false);
-
-        return path;
-    }
-
-    private Path computeUserClassPath() {
-        String cp = options.get(CLASSPATH);
-
-        // CLASSPATH environment variable when run from `javac'.
-        if (cp == null) cp = System.getProperty("env.class.path");
-
-        // If invoked via a java VM (not the javac launcher), use the
-        // platform class path
-        if (cp == null && System.getProperty("application.home") == null)
-            cp = System.getProperty("java.class.path");
-
-        // Default to current working directory.
-        if (cp == null) cp = ".";
-
-        return new Path()
-            .expandJarClassPaths(true) // Only search user jars for Class-Paths
-            .emptyPathDefault(".")     // Empty path elt ==> current directory
-            .addFiles(cp);
-    }
-
-    private Path computeSourcePath() {
-        String sourcePathArg = options.get(SOURCEPATH);
-        if (sourcePathArg == null)
-            return null;
-
-        return new Path().addFiles(sourcePathArg);
-    }
-
-    private Path computeAnnotationProcessorPath() {
-        String processorPathArg = options.get(PROCESSORPATH);
-        if (processorPathArg == null)
-            return null;
-
-        return new Path().addFiles(processorPathArg);
-    }
-
-    /** The actual effective locations searched for sources */
-    private Path sourceSearchPath;
-
-    public Collection<File> sourceSearchPath() {
-        if (sourceSearchPath == null) {
-            lazy();
-            Path sourcePath = getPathForLocation(SOURCE_PATH);
-            Path userClassPath = getPathForLocation(CLASS_PATH);
-            sourceSearchPath = sourcePath != null ? sourcePath : userClassPath;
-        }
-        return Collections.unmodifiableCollection(sourceSearchPath);
-    }
-
-    /** The actual effective locations searched for classes */
-    private Path classSearchPath;
-
-    public Collection<File> classSearchPath() {
-        if (classSearchPath == null) {
-            lazy();
-            Path bootClassPath = getPathForLocation(PLATFORM_CLASS_PATH);
-            Path userClassPath = getPathForLocation(CLASS_PATH);
-            classSearchPath = new Path();
-            classSearchPath.addAll(bootClassPath);
-            classSearchPath.addAll(userClassPath);
-        }
-        return Collections.unmodifiableCollection(classSearchPath);
-    }
-
-    /** The actual effective locations for non-source, non-class files */
-    private Path otherSearchPath;
-
-    Collection<File> otherSearchPath() {
-        if (otherSearchPath == null) {
-            lazy();
-            Path userClassPath = getPathForLocation(CLASS_PATH);
-            Path sourcePath = getPathForLocation(SOURCE_PATH);
-            if (sourcePath == null)
-                otherSearchPath = userClassPath;
-            else {
-                otherSearchPath = new Path();
-                otherSearchPath.addAll(userClassPath);
-                otherSearchPath.addAll(sourcePath);
-            }
-        }
-        return Collections.unmodifiableCollection(otherSearchPath);
-    }
-
-    /** Is this the name of an archive file? */
-    private static boolean isArchive(File file) {
-        String n = file.getName().toLowerCase();
-        boolean isFile = false;
-        if (!NON_BATCH_MODE) {
-            Boolean isf = isDirectory.get(file);
-            if (isf == null) {
-                isFile = file.isFile();
-                isDirectory.put(file, isFile);
-            }
-            else {
-                isFile = isf;
-            }
-        }
-        else {
-            isFile = file.isFile();
-        }
-
-        return isFile
-            && (n.endsWith(".jar") || n.endsWith(".zip"));
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1236 +0,0 @@
-/*
- * 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 com.sun.tools.javac.zip;
-
-import java.io.*;
-import java.text.MessageFormat;
-import java.util.*;
-import java.util.List;
-import java.util.concurrent.locks.ReentrantLock;
-import java.util.zip.*;
-
-/** This class implements building of index of a zip archive and access to it's context.
- *  It also uses prebuild index if available. It supports invocations where it will
- *  serialize an optimized zip index file to disk.
- *
- *  In oreder to use secondary index file make sure the option "usezipindex" is in the Options object,
- *  when JavacFileManager is invoked. (You can pass "-XDusezipindex" on the command line.
- *
- *  Location where to look for/generate optimized zip index files can be provided using
- *  "-XDcachezipindexdir=<directory>". If this flag is not provided, the dfault location is
- *  the value of the "java.io.tmpdir" system property.
- *
- *  If key "-XDwritezipindexfiles" is specified, there will be new optimized index file
- *  created for each archive, used by the compiler for compilation, at location,
- *  specified by "cachezipindexdir" option.
- *
- * If nonBatchMode option is specified (-XDnonBatchMode) the compiler will use timestamp
- * checking to reindex the zip files if it is needed. In batch mode the timestamps are not checked
- * and the compiler uses the cached indexes.
- */
-public class ZipFileIndex {
-    private static final String MIN_CHAR = String.valueOf(Character.MIN_VALUE);
-    private static final String MAX_CHAR = String.valueOf(Character.MAX_VALUE);
-
-    public final static long NOT_MODIFIED = Long.MIN_VALUE;
-
-    private static Map<File, ZipFileIndex> zipFileIndexCache = new HashMap<File, ZipFileIndex>();
-    private static ReentrantLock lock = new ReentrantLock();
-
-    private static boolean NON_BATCH_MODE = System.getProperty("nonBatchMode") != null;// TODO: Use -XD compiler switch for this.
-
-    private Map<String, DirectoryEntry> directories = Collections.<String, DirectoryEntry>emptyMap();
-    private Set<String> allDirs = Collections.<String>emptySet();
-
-    // ZipFileIndex data entries
-    private File zipFile;
-    private long zipFileLastModified = NOT_MODIFIED;
-    private RandomAccessFile zipRandomFile;
-    private ZipFileIndexEntry[] entries;
-
-    private boolean readFromIndex = false;
-    private File zipIndexFile = null;
-    private boolean triedToReadIndex = false;
-    private int symbolFilePrefixLength = 0;
-    private boolean hasPopulatedData = false;
-    private long lastReferenceTimeStamp = NOT_MODIFIED;
-
-    private boolean usePreindexedCache = false;
-    private String preindexedCacheLocation = null;
-
-    private boolean writeIndex = false;
-
-    /**
-     * Returns a list of all ZipFileIndex entries
-     *
-     * @return A list of ZipFileIndex entries, or an empty list
-     */
-    public static List<ZipFileIndex> getZipFileIndexes() {
-        return getZipFileIndexes(false);
-    }
-
-    /**
-     * Returns a list of all ZipFileIndex entries
-     *
-     * @param openedOnly If true it returns a list of only opened ZipFileIndex entries, otherwise
-     *                   all ZipFileEntry(s) are included into the list.
-     * @return A list of ZipFileIndex entries, or an empty list
-     */
-    public static List<ZipFileIndex> getZipFileIndexes(boolean openedOnly) {
-        List<ZipFileIndex> zipFileIndexes = new ArrayList<ZipFileIndex>();
-        lock.lock();
-        try {
-            zipFileIndexes.addAll(zipFileIndexCache.values());
-
-            if (openedOnly) {
-                for(ZipFileIndex elem : zipFileIndexes) {
-                    if (!elem.isOpen()) {
-                        zipFileIndexes.remove(elem);
-                    }
-                }
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-        return zipFileIndexes;
-    }
-
-    public boolean isOpen() {
-        lock.lock();
-        try {
-            return zipRandomFile != null;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public static ZipFileIndex getZipFileIndex(File zipFile, int symbolFilePrefixLen, boolean useCache, String cacheLocation, boolean writeIndex) throws IOException {
-        ZipFileIndex zi = null;
-        lock.lock();
-        try {
-            zi = getExistingZipIndex(zipFile);
-
-            if (zi == null || (zi != null && zipFile.lastModified() != zi.zipFileLastModified)) {
-                zi = new ZipFileIndex(zipFile, symbolFilePrefixLen, writeIndex,
-                        useCache, cacheLocation);
-                zipFileIndexCache.put(zipFile, zi);
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-        return zi;
-    }
-
-    public static ZipFileIndex getExistingZipIndex(File zipFile) {
-        lock.lock();
-        try {
-            return zipFileIndexCache.get(zipFile);
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public static void clearCache() {
-        lock.lock();
-        try {
-            zipFileIndexCache.clear();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public static void clearCache(long timeNotUsed) {
-        lock.lock();
-        try {
-            Iterator<File> cachedFileIterator = zipFileIndexCache.keySet().iterator();
-            while (cachedFileIterator.hasNext()) {
-                File cachedFile = cachedFileIterator.next();
-                ZipFileIndex cachedZipIndex = zipFileIndexCache.get(cachedFile);
-                if (cachedZipIndex != null) {
-                    long timeToTest = cachedZipIndex.lastReferenceTimeStamp + timeNotUsed;
-                    if (timeToTest < cachedZipIndex.lastReferenceTimeStamp || // Overflow...
-                            System.currentTimeMillis() > timeToTest) {
-                        zipFileIndexCache.remove(cachedFile);
-                    }
-                }
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public static void removeFromCache(File file) {
-        lock.lock();
-        try {
-            zipFileIndexCache.remove(file);
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    /** Sets already opened list of ZipFileIndexes from an outside client
-      * of the compiler. This functionality should be used in a non-batch clients of the compiler.
-      */
-    public static void setOpenedIndexes(List<ZipFileIndex>indexes) throws IllegalStateException {
-        lock.lock();
-        try {
-            if (zipFileIndexCache.isEmpty()) {
-                throw new IllegalStateException("Setting opened indexes should be called only when the ZipFileCache is empty. Call JavacFileManager.flush() before calling this method.");
-            }
-
-            for (ZipFileIndex zfi : indexes) {
-                zipFileIndexCache.put(zfi.zipFile, zfi);
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    private ZipFileIndex(File zipFile, int symbolFilePrefixLen, boolean writeIndex,
-            boolean useCache, String cacheLocation) throws IOException {
-        this.zipFile = zipFile;
-        this.symbolFilePrefixLength = symbolFilePrefixLen;
-        this.writeIndex = writeIndex;
-        this.usePreindexedCache = useCache;
-        this.preindexedCacheLocation = cacheLocation;
-
-        if (zipFile != null) {
-            this.zipFileLastModified = zipFile.lastModified();
-        }
-
-        // Validate integrity of the zip file
-        checkIndex();
-    }
-
-    public String toString() {
-        return "ZipFileIndex of file:(" + zipFile + ")";
-    }
-
-    // Just in case...
-    protected void finalize() {
-        closeFile();
-    }
-
-    private boolean isUpToDate() {
-        if (zipFile != null &&
-                ((!NON_BATCH_MODE) || zipFileLastModified == zipFile.lastModified()) &&
-                hasPopulatedData) {
-            return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Here we need to make sure that the ZipFileIndex is valid. Check the timestamp of the file and
-     * if its the same as the one at the time the index was build we don't need to reopen anything.
-     */
-    private void checkIndex() throws IOException {
-        boolean isUpToDate = true;
-        if (!isUpToDate()) {
-            closeFile();
-            isUpToDate = false;
-        }
-
-        if (zipRandomFile != null || isUpToDate) {
-            lastReferenceTimeStamp = System.currentTimeMillis();
-            return;
-        }
-
-        hasPopulatedData = true;
-
-        if (readIndex()) {
-            lastReferenceTimeStamp = System.currentTimeMillis();
-            return;
-        }
-
-        directories = Collections.<String, DirectoryEntry>emptyMap();
-        allDirs = Collections.<String>emptySet();
-
-        try {
-            openFile();
-            long totalLength = zipRandomFile.length();
-            ZipDirectory directory = new ZipDirectory(zipRandomFile, 0L, totalLength, this);
-            directory.buildIndex();
-        } finally {
-            if (zipRandomFile != null) {
-                closeFile();
-            }
-        }
-
-        lastReferenceTimeStamp = System.currentTimeMillis();
-    }
-
-    private void openFile() throws FileNotFoundException {
-        if (zipRandomFile == null && zipFile != null) {
-            zipRandomFile = new RandomAccessFile(zipFile, "r");
-        }
-    }
-
-    private void cleanupState() {
-        // Make sure there is a valid but empty index if the file doesn't exist
-        entries = ZipFileIndexEntry.EMPTY_ARRAY;
-        directories = Collections.<String, DirectoryEntry>emptyMap();
-        zipFileLastModified = NOT_MODIFIED;
-        allDirs = Collections.<String>emptySet();
-    }
-
-    public void close() {
-        lock.lock();
-        try {
-            writeIndex();
-            closeFile();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    private void closeFile() {
-        if (zipRandomFile != null) {
-            try {
-                zipRandomFile.close();
-            } catch (IOException ex) {
-            }
-            zipRandomFile = null;
-        }
-    }
-
-    /**
-     * Returns the ZipFileIndexEntry for an absolute path, if there is one.
-     */
-    public ZipFileIndexEntry getZipIndexEntry(String path) {
-        if (File.separatorChar != '/') {
-            path = path.replace('/', File.separatorChar);
-        }
-        lock.lock();
-        try {
-            checkIndex();
-            String lookFor = "";
-            int lastSepIndex = path.lastIndexOf(File.separatorChar);
-            boolean noSeparator = false;
-            if (lastSepIndex == -1) {
-                noSeparator = true;
-            }
-
-            DirectoryEntry de = directories.get(noSeparator ? "" : path.substring(0, lastSepIndex));
-
-            lookFor = path.substring(noSeparator ? 0 : lastSepIndex + 1);
-
-            return de == null ? null : de.getEntry(lookFor);
-        }
-        catch (IOException e) {
-            return null;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Returns a javac List of filenames within an absolute path in the ZipFileIndex.
-     */
-    public com.sun.tools.javac.util.List<String> getFiles(String path) {
-        if (File.separatorChar != '/') {
-            path = path.replace('/', File.separatorChar);
-        }
-
-        lock.lock();
-        try {
-            checkIndex();
-
-            DirectoryEntry de = directories.get(path);
-            com.sun.tools.javac.util.List<String> ret = de == null ? null : de.getFiles();
-
-            if (ret == null) {
-                return com.sun.tools.javac.util.List.<String>nil();
-            }
-            return ret;
-        }
-        catch (IOException e) {
-            return com.sun.tools.javac.util.List.<String>nil();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public List<String> getAllDirectories(String path) {
-
-        if (File.separatorChar != '/') {
-            path = path.replace('/', File.separatorChar);
-        }
-
-        lock.lock();
-        try {
-            checkIndex();
-            path = path.intern();
-
-            DirectoryEntry de = directories.get(path);
-            com.sun.tools.javac.util.List<String> ret = de == null ? null : de.getDirectories();
-
-            if (ret == null) {
-                return com.sun.tools.javac.util.List.<String>nil();
-            }
-
-            return ret;
-        }
-        catch (IOException e) {
-            return com.sun.tools.javac.util.List.<String>nil();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public Set<String> getAllDirectories() {
-        lock.lock();
-        try {
-            checkIndex();
-            if (allDirs == Collections.EMPTY_SET) {
-                Set<String> alldirs = new HashSet<String>();
-                Iterator<String> dirsIter = directories.keySet().iterator();
-                while (dirsIter.hasNext()) {
-                    alldirs.add(new String(dirsIter.next()));
-                }
-
-                allDirs = alldirs;
-            }
-
-            return allDirs;
-        }
-        catch (IOException e) {
-            return Collections.<String>emptySet();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Tests if a specific path exists in the zip.  This method will return true
-     * for file entries and directories.
-     *
-     * @param path A path within the zip.
-     * @return True if the path is a file or dir, false otherwise.
-     */
-    public boolean contains(String path) {
-        lock.lock();
-        try {
-            checkIndex();
-            return getZipIndexEntry(path) != null;
-        }
-        catch (IOException e) {
-            return false;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public boolean isDirectory(String path) throws IOException {
-        lock.lock();
-        try {
-            // The top level in a zip file is always a directory.
-            if (path.length() == 0) {
-                lastReferenceTimeStamp = System.currentTimeMillis();
-                return true;
-            }
-
-            if (File.separatorChar != '/')
-                path = path.replace('/', File.separatorChar);
-            checkIndex();
-            return directories.get(path) != null;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public long getLastModified(String path) throws IOException {
-        lock.lock();
-        try {
-            ZipFileIndexEntry entry = getZipIndexEntry(path);
-            if (entry == null)
-                throw new FileNotFoundException();
-            return entry.getLastModified();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public int length(String path) throws IOException {
-        lock.lock();
-        try {
-            ZipFileIndexEntry entry = getZipIndexEntry(path);
-            if (entry == null)
-                throw new FileNotFoundException();
-
-            if (entry.isDir) {
-                return 0;
-            }
-
-            byte[] header = getHeader(entry);
-            // entry is not compressed?
-            if (get2ByteLittleEndian(header, 8) == 0) {
-                return entry.compressedSize;
-            } else {
-                return entry.size;
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public byte[] read(String path) throws IOException {
-        lock.lock();
-        try {
-            ZipFileIndexEntry entry = getZipIndexEntry(path);
-            if (entry == null)
-                throw new FileNotFoundException(MessageFormat.format("Path not found in ZIP: {0}", path));
-            return read(entry);
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public byte[] read(ZipFileIndexEntry entry) throws IOException {
-        lock.lock();
-        try {
-            openFile();
-            byte[] result = readBytes(entry);
-            closeFile();
-            return result;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public int read(String path, byte[] buffer) throws IOException {
-        lock.lock();
-        try {
-            ZipFileIndexEntry entry = getZipIndexEntry(path);
-            if (entry == null)
-                throw new FileNotFoundException();
-            return read(entry, buffer);
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    public int read(ZipFileIndexEntry entry, byte[] buffer)
-            throws IOException {
-        lock.lock();
-        try {
-            int result = readBytes(entry, buffer);
-            return result;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    private byte[] readBytes(ZipFileIndexEntry entry) throws IOException {
-        byte[] header = getHeader(entry);
-        int csize = entry.compressedSize;
-        byte[] cbuf = new byte[csize];
-        zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
-        zipRandomFile.readFully(cbuf, 0, csize);
-
-        // is this compressed - offset 8 in the ZipEntry header
-        if (get2ByteLittleEndian(header, 8) == 0)
-            return cbuf;
-
-        int size = entry.size;
-        byte[] buf = new byte[size];
-        if (inflate(cbuf, buf) != size)
-            throw new ZipException("corrupted zip file");
-
-        return buf;
-    }
-
-    /**
-     *
-     */
-    private int readBytes(ZipFileIndexEntry entry, byte[] buffer) throws IOException {
-        byte[] header = getHeader(entry);
-
-        // entry is not compressed?
-        if (get2ByteLittleEndian(header, 8) == 0) {
-            zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
-            int offset = 0;
-            int size = buffer.length;
-            while (offset < size) {
-                int count = zipRandomFile.read(buffer, offset, size - offset);
-                if (count == -1)
-                    break;
-                offset += count;
-            }
-            return entry.size;
-        }
-
-        int csize = entry.compressedSize;
-        byte[] cbuf = new byte[csize];
-        zipRandomFile.skipBytes(get2ByteLittleEndian(header, 26) + get2ByteLittleEndian(header, 28));
-        zipRandomFile.readFully(cbuf, 0, csize);
-
-        int count = inflate(cbuf, buffer);
-        if (count == -1)
-            throw new ZipException("corrupted zip file");
-
-        return entry.size;
-    }
-
-    //----------------------------------------------------------------------------
-    // Zip utilities
-    //----------------------------------------------------------------------------
-
-    private byte[] getHeader(ZipFileIndexEntry entry) throws IOException {
-        zipRandomFile.seek(entry.offset);
-        byte[] header = new byte[30];
-        zipRandomFile.readFully(header);
-        if (get4ByteLittleEndian(header, 0) != 0x04034b50)
-            throw new ZipException("corrupted zip file");
-        if ((get2ByteLittleEndian(header, 6) & 1) != 0)
-            throw new ZipException("encrypted zip file"); // offset 6 in the header of the ZipFileEntry
-        return header;
-    }
-
-  /*
-   * Inflate using the java.util.zip.Inflater class
-   */
-    private static Inflater inflater;
-    private int inflate(byte[] src, byte[] dest) {
-
-        // construct the inflater object or reuse an existing one
-        if (inflater == null)
-            inflater = new Inflater(true);
-
-        synchronized (inflater) {
-            inflater.reset();
-            inflater.setInput(src);
-            try {
-                return inflater.inflate(dest);
-            } catch (DataFormatException ex) {
-                return -1;
-            }
-        }
-    }
-
-    /**
-     * return the two bytes buf[pos], buf[pos+1] as an unsigned integer in little
-     * endian format.
-     */
-    private static int get2ByteLittleEndian(byte[] buf, int pos) {
-        return (buf[pos] & 0xFF) + ((buf[pos+1] & 0xFF) << 8);
-    }
-
-    /**
-     * return the 4 bytes buf[i..i+3] as an integer in little endian format.
-     */
-    private static int get4ByteLittleEndian(byte[] buf, int pos) {
-        return (buf[pos] & 0xFF) + ((buf[pos + 1] & 0xFF) << 8) +
-                ((buf[pos + 2] & 0xFF) << 16) + ((buf[pos + 3] & 0xFF) << 24);
-    }
-
-    /* ----------------------------------------------------------------------------
-     * ZipDirectory
-     * ----------------------------------------------------------------------------*/
-
-    private class ZipDirectory {
-        private String lastDir;
-        private int lastStart;
-        private int lastLen;
-
-        byte[] zipDir;
-        RandomAccessFile zipRandomFile = null;
-        ZipFileIndex zipFileIndex = null;
-
-        public ZipDirectory(RandomAccessFile zipRandomFile, long start, long end, ZipFileIndex index) throws IOException {
-            this.zipRandomFile = zipRandomFile;
-            this.zipFileIndex = index;
-
-            findCENRecord(start, end);
-        }
-
-        /*
-         * Reads zip file central directory.
-         * For more details see readCEN in zip_util.c from the JDK sources.
-         * This is a Java port of that function.
-         */
-        private void findCENRecord(long start, long end) throws IOException {
-            long totalLength = end - start;
-            int endbuflen = 1024;
-            byte[] endbuf = new byte[endbuflen];
-            long endbufend = end - start;
-
-            // There is a variable-length field after the dir offset record. We need to do consequential search.
-            while (endbufend >= 22) {
-                if (endbufend < endbuflen)
-                    endbuflen = (int)endbufend;
-                long endbufpos = endbufend - endbuflen;
-                zipRandomFile.seek(start + endbufpos);
-                zipRandomFile.readFully(endbuf, 0, endbuflen);
-                int i = endbuflen - 22;
-                while (i >= 0 &&
-                        !(endbuf[i] == 0x50 &&
-                        endbuf[i + 1] == 0x4b &&
-                        endbuf[i + 2] == 0x05 &&
-                        endbuf[i + 3] == 0x06 &&
-                        endbufpos + i + 22 +
-                        get2ByteLittleEndian(endbuf, i + 20) == totalLength)) {
-                    i--;
-                }
-
-                if (i >= 0) {
-                    zipDir = new byte[get4ByteLittleEndian(endbuf, i + 12) + 2];
-                    zipDir[0] = endbuf[i + 10];
-                    zipDir[1] = endbuf[i + 11];
-                    zipRandomFile.seek(start + get4ByteLittleEndian(endbuf, i + 16));
-                    zipRandomFile.readFully(zipDir, 2, zipDir.length - 2);
-                    return;
-                } else {
-                    endbufend = endbufpos + 21;
-                }
-            }
-            throw new ZipException("cannot read zip file");
-        }
-        private void buildIndex() throws IOException {
-            int entryCount = get2ByteLittleEndian(zipDir, 0);
-
-            entries = new ZipFileIndexEntry[entryCount];
-            // Add each of the files
-            if (entryCount > 0) {
-                directories = new HashMap<String, DirectoryEntry>();
-                ArrayList<ZipFileIndexEntry> entryList = new ArrayList<ZipFileIndexEntry>();
-                int pos = 2;
-                for (int i = 0; i < entryCount; i++) {
-                    pos = readEntry(pos, entryList, directories);
-                }
-
-                // Add the accumulated dirs into the same list
-                Iterator i = directories.keySet().iterator();
-                while (i.hasNext()) {
-                    ZipFileIndexEntry zipFileIndexEntry = new ZipFileIndexEntry( (String) i.next());
-                    zipFileIndexEntry.isDir = true;
-                    entryList.add(zipFileIndexEntry);
-                }
-
-                entries = entryList.toArray(new ZipFileIndexEntry[entryList.size()]);
-                Arrays.sort(entries);
-            } else {
-                cleanupState();
-            }
-        }
-
-        private int readEntry(int pos, List<ZipFileIndexEntry> entryList,
-                Map<String, DirectoryEntry> directories) throws IOException {
-            if (get4ByteLittleEndian(zipDir, pos) != 0x02014b50) {
-                throw new ZipException("cannot read zip file entry");
-            }
-
-            int dirStart = pos + 46;
-            int fileStart = dirStart;
-            int fileEnd = fileStart + get2ByteLittleEndian(zipDir, pos + 28);
-
-            if (zipFileIndex.symbolFilePrefixLength != 0 &&
-                    ((fileEnd - fileStart) >= symbolFilePrefixLength)) {
-                dirStart += zipFileIndex.symbolFilePrefixLength;
-               fileStart += zipFileIndex.symbolFilePrefixLength;
-            }
-
-            // Use the OS's path separator. Keep the position of the last one.
-            for (int index = fileStart; index < fileEnd; index++) {
-                byte nextByte = zipDir[index];
-                if (nextByte == (byte)'\\' || nextByte == (byte)'/') {
-                    zipDir[index] = (byte)File.separatorChar;
-                    fileStart = index + 1;
-                }
-            }
-
-            String directory = null;
-            if (fileStart == dirStart)
-                directory = "";
-            else if (lastDir != null && lastLen == fileStart - dirStart - 1) {
-                int index = lastLen - 1;
-                while (zipDir[lastStart + index] == zipDir[dirStart + index]) {
-                    if (index == 0) {
-                        directory = lastDir;
-                        break;
-                    }
-                    index--;
-                }
-            }
-
-            // Sub directories
-            if (directory == null) {
-                lastStart = dirStart;
-                lastLen = fileStart - dirStart - 1;
-
-                directory = new String(zipDir, dirStart, lastLen, "UTF-8").intern();
-                lastDir = directory;
-
-                // Enter also all the parent directories
-                String tempDirectory = directory;
-
-                while (directories.get(tempDirectory) == null) {
-                    directories.put(tempDirectory, new DirectoryEntry(tempDirectory, zipFileIndex));
-                    int separator = tempDirectory.lastIndexOf(File.separatorChar);
-                    if (separator == -1)
-                        break;
-                    tempDirectory = tempDirectory.substring(0, separator);
-                }
-            }
-            else {
-                directory = directory.intern();
-                if (directories.get(directory) == null) {
-                    directories.put(directory, new DirectoryEntry(directory, zipFileIndex));
-                }
-            }
-
-            // For each dir create also a file
-            if (fileStart != fileEnd) {
-                ZipFileIndexEntry entry = new ZipFileIndexEntry(directory,
-                        new String(zipDir, fileStart, fileEnd - fileStart, "UTF-8"));
-
-                entry.setNativeTime(get4ByteLittleEndian(zipDir, pos + 12));
-                entry.compressedSize = get4ByteLittleEndian(zipDir, pos + 20);
-                entry.size = get4ByteLittleEndian(zipDir, pos + 24);
-                entry.offset = get4ByteLittleEndian(zipDir, pos + 42);
-                entryList.add(entry);
-            }
-
-            return pos + 46 +
-                    get2ByteLittleEndian(zipDir, pos + 28) +
-                    get2ByteLittleEndian(zipDir, pos + 30) +
-                    get2ByteLittleEndian(zipDir, pos + 32);
-        }
-    }
-
-    /**
-     * Returns the last modified timestamp of a zip file.
-     * @return long
-     */
-    public long getZipFileLastModified() throws IOException {
-        lock.lock();
-        try {
-            checkIndex();
-            return zipFileLastModified;
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    /** ------------------------------------------------------------------------
-     *  DirectoryEntry class
-     * -------------------------------------------------------------------------*/
-    static class DirectoryEntry {
-        private boolean filesInited;
-        private boolean directoriesInited;
-        private boolean zipFileEntriesInited;
-        private boolean entriesInited;
-
-        private long writtenOffsetOffset = 0;
-
-        private String dirName;
-
-        private com.sun.tools.javac.util.List<String> zipFileEntriesFiles = com.sun.tools.javac.util.List.<String>nil();
-        private com.sun.tools.javac.util.List<String> zipFileEntriesDirectories = com.sun.tools.javac.util.List.<String>nil();
-        private com.sun.tools.javac.util.List<ZipFileIndexEntry>  zipFileEntries = com.sun.tools.javac.util.List.<ZipFileIndexEntry>nil();
-
-        private List<ZipFileIndexEntry> entries = new ArrayList<ZipFileIndexEntry>();
-
-        private ZipFileIndex zipFileIndex;
-
-        private int numEntries;
-
-        DirectoryEntry(String dirName, ZipFileIndex index) {
-        filesInited = false;
-            directoriesInited = false;
-            entriesInited = false;
-
-            if (File.separatorChar == '/') {
-                dirName.replace('\\', '/');
-            }
-            else {
-                dirName.replace('/', '\\');
-            }
-
-            this.dirName = dirName.intern();
-            this.zipFileIndex = index;
-        }
-
-        private com.sun.tools.javac.util.List<String> getFiles() {
-            if (filesInited) {
-                return zipFileEntriesFiles;
-            }
-
-            initEntries();
-
-            for (ZipFileIndexEntry e : entries) {
-                if (!e.isDir) {
-                    zipFileEntriesFiles = zipFileEntriesFiles.append(e.name);
-                }
-            }
-            filesInited = true;
-            return zipFileEntriesFiles;
-        }
-
-        private com.sun.tools.javac.util.List<String> getDirectories() {
-            if (directoriesInited) {
-                return zipFileEntriesFiles;
-            }
-
-            initEntries();
-
-            for (ZipFileIndexEntry e : entries) {
-                if (e.isDir) {
-                    zipFileEntriesDirectories = zipFileEntriesDirectories.append(e.name);
-                }
-            }
-
-            directoriesInited = true;
-
-            return zipFileEntriesDirectories;
-        }
-
-        private com.sun.tools.javac.util.List<ZipFileIndexEntry> getEntries() {
-            if (zipFileEntriesInited) {
-                return zipFileEntries;
-            }
-
-            initEntries();
-
-            zipFileEntries = com.sun.tools.javac.util.List.nil();
-            for (ZipFileIndexEntry zfie : entries) {
-                zipFileEntries = zipFileEntries.append(zfie);
-            }
-
-            zipFileEntriesInited = true;
-
-            return zipFileEntries;
-        }
-
-        private ZipFileIndexEntry getEntry(String rootName) {
-            initEntries();
-            int index = Collections.binarySearch(entries, new ZipFileIndexEntry(dirName, rootName));
-            if (index < 0) {
-                return null;
-            }
-
-            return entries.get(index);
-        }
-
-        private void initEntries() {
-            if (entriesInited) {
-                return;
-            }
-
-            if (!zipFileIndex.readFromIndex) {
-                int from = -Arrays.binarySearch(zipFileIndex.entries,
-                        new ZipFileIndexEntry(dirName, ZipFileIndex.MIN_CHAR)) - 1;
-                int to = -Arrays.binarySearch(zipFileIndex.entries,
-                        new ZipFileIndexEntry(dirName, MAX_CHAR)) - 1;
-
-                boolean emptyList = false;
-
-                for (int i = from; i < to; i++) {
-                    entries.add(zipFileIndex.entries[i]);
-                }
-            } else {
-                File indexFile = zipFileIndex.getIndexFile();
-                if (indexFile != null) {
-                    RandomAccessFile raf = null;
-                    try {
-                        raf = new RandomAccessFile(indexFile, "r");
-                        raf.seek(writtenOffsetOffset);
-
-                        for (int nFiles = 0; nFiles < numEntries; nFiles++) {
-                            // Read the name bytes
-                            int zfieNameBytesLen = raf.readInt();
-                            byte [] zfieNameBytes = new byte[zfieNameBytesLen];
-                            raf.read(zfieNameBytes);
-                            String eName = new String(zfieNameBytes, "UTF-8");
-
-                            // Read isDir
-                            boolean eIsDir = raf.readByte() == (byte)0 ? false : true;
-
-                            // Read offset of bytes in the real Jar/Zip file
-                            int eOffset = raf.readInt();
-
-                            // Read size of the file in the real Jar/Zip file
-                            int eSize = raf.readInt();
-
-                            // Read compressed size of the file in the real Jar/Zip file
-                            int eCsize = raf.readInt();
-
-                            // Read java time stamp of the file in the real Jar/Zip file
-                            long eJavaTimestamp = raf.readLong();
-
-                            ZipFileIndexEntry rfie = new ZipFileIndexEntry(dirName, eName);
-                            rfie.isDir = eIsDir;
-                            rfie.offset = eOffset;
-                            rfie.size = eSize;
-                            rfie.compressedSize = eCsize;
-                            rfie.javatime = eJavaTimestamp;
-                            entries.add(rfie);
-                        }
-                    } catch (Throwable t) {
-                        // Do nothing
-                    } finally {
-                        try {
-                            if (raf == null) {
-                                raf.close();
-                            }
-                        } catch (Throwable t) {
-                            // Do nothing
-                        }
-                    }
-                }
-            }
-
-            entriesInited = true;
-        }
-
-        List<ZipFileIndexEntry> getEntriesAsCollection() {
-            initEntries();
-
-            return entries;
-        }
-    }
-
-    private boolean readIndex() {
-        if (triedToReadIndex || !usePreindexedCache) {
-            return false;
-        }
-
-        boolean ret = false;
-        lock.lock();
-        try {
-            triedToReadIndex = true;
-            RandomAccessFile raf = null;
-            try {
-                File indexFileName = getIndexFile();
-                raf = new RandomAccessFile(indexFileName, "r");
-
-                long fileStamp = raf.readLong();
-                if (zipFile.lastModified() != fileStamp) {
-                    ret = false;
-                } else {
-                    directories = new HashMap<String, DirectoryEntry>();
-                    int numDirs = raf.readInt();
-                    for (int nDirs = 0; nDirs < numDirs; nDirs++) {
-                        int dirNameBytesLen = raf.readInt();
-                        byte [] dirNameBytes = new byte[dirNameBytesLen];
-                        raf.read(dirNameBytes);
-
-                        String dirNameStr = new String(dirNameBytes, "UTF-8");
-                        DirectoryEntry de = new DirectoryEntry(dirNameStr, this);
-                        de.numEntries = raf.readInt();
-                        de.writtenOffsetOffset = raf.readLong();
-                        directories.put(dirNameStr, de);
-                    }
-                    ret = true;
-                    zipFileLastModified = fileStamp;
-                }
-            } catch (Throwable t) {
-                // Do nothing
-            } finally {
-                if (raf != null) {
-                    try {
-                        raf.close();
-                    } catch (Throwable tt) {
-                        // Do nothing
-                    }
-                }
-            }
-            if (ret == true) {
-                readFromIndex = true;
-            }
-        }
-        finally {
-            lock.unlock();
-        }
-
-        return ret;
-    }
-
-    private boolean writeIndex() {
-        boolean ret = false;
-        if (readFromIndex || !usePreindexedCache) {
-            return true;
-        }
-
-        if (!writeIndex) {
-            return true;
-        }
-
-        File indexFile = getIndexFile();
-        if (indexFile == null) {
-            return false;
-        }
-
-        RandomAccessFile raf = null;
-        long writtenSoFar = 0;
-        try {
-            raf = new RandomAccessFile(indexFile, "rw");
-
-            raf.writeLong(zipFileLastModified);
-            writtenSoFar += 8;
-
-
-            Iterator<String> iterDirName = directories.keySet().iterator();
-            List<DirectoryEntry> directoriesToWrite = new ArrayList<DirectoryEntry>();
-            Map<String, Long> offsets = new HashMap<String, Long>();
-            raf.writeInt(directories.keySet().size());
-            writtenSoFar += 4;
-
-            while(iterDirName.hasNext()) {
-                String dirName = iterDirName.next();
-                DirectoryEntry dirEntry = directories.get(dirName);
-
-                directoriesToWrite.add(dirEntry);
-
-                // Write the dir name bytes
-                byte [] dirNameBytes = dirName.getBytes("UTF-8");
-                int dirNameBytesLen = dirNameBytes.length;
-                raf.writeInt(dirNameBytesLen);
-                writtenSoFar += 4;
-
-                raf.write(dirNameBytes);
-                writtenSoFar += dirNameBytesLen;
-
-                // Write the number of files in the dir
-                List dirEntries = dirEntry.getEntriesAsCollection();
-                raf.writeInt(dirEntries.size());
-                writtenSoFar += 4;
-
-                offsets.put(dirName, new Long(writtenSoFar));
-
-                // Write the offset of the file's data in the dir
-                dirEntry.writtenOffsetOffset = 0L;
-                raf.writeLong(0L);
-                writtenSoFar += 8;
-            }
-
-            for (DirectoryEntry de : directoriesToWrite) {
-                // Fix up the offset in the directory table
-                long currFP = raf.getFilePointer();
-
-                long offsetOffset = offsets.get(de.dirName).longValue();
-                raf.seek(offsetOffset);
-                raf.writeLong(writtenSoFar);
-
-                raf.seek(currFP);
-
-                // Now write each of the files in the DirectoryEntry
-                List<ZipFileIndexEntry> entries = de.getEntriesAsCollection();
-                for (ZipFileIndexEntry zfie : entries) {
-                    // Write the name bytes
-                    byte [] zfieNameBytes = zfie.name.getBytes("UTF-8");
-                    int zfieNameBytesLen = zfieNameBytes.length;
-                    raf.writeInt(zfieNameBytesLen);
-                    writtenSoFar += 4;
-                    raf.write(zfieNameBytes);
-                    writtenSoFar += zfieNameBytesLen;
-
-                    // Write isDir
-                    raf.writeByte(zfie.isDir ? (byte)1 : (byte)0);
-                    writtenSoFar += 1;
-
-                    // Write offset of bytes in the real Jar/Zip file
-                    raf.writeInt(zfie.offset);
-                    writtenSoFar += 4;
-
-                    // Write size of the file in the real Jar/Zip file
-                    raf.writeInt(zfie.size);
-                    writtenSoFar += 4;
-
-                    // Write compressed size of the file in the real Jar/Zip file
-                    raf.writeInt(zfie.compressedSize);
-                    writtenSoFar += 4;
-
-                    // Write java time stamp of the file in the real Jar/Zip file
-                    raf.writeLong(zfie.getLastModified());
-                    writtenSoFar += 8;
-                }
-            }
-        } catch (Throwable t) {
-            // Do nothing
-        } finally {
-            try {
-                if (raf != null) {
-                    raf.close();
-                }
-            } catch(IOException ioe) {
-                // Do nothing
-            }
-        }
-
-        return ret;
-    }
-
-    public boolean writeZipIndex() {
-        lock.lock();
-        try {
-            return writeIndex();
-        }
-        finally {
-            lock.unlock();
-        }
-    }
-
-    private File getIndexFile() {
-        if (zipIndexFile == null) {
-            if (zipFile == null) {
-                return null;
-            }
-
-            zipIndexFile = new File((preindexedCacheLocation == null ? "" : preindexedCacheLocation) +
-                    zipFile.getName() + ".index");
-        }
-
-        return zipIndexFile;
-    }
-
-    public File getZipFile() {
-        return zipFile;
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java	Thu Jul 03 10:09:25 2008 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-/*
- * 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 com.sun.tools.javac.zip;
-
-import java.io.File;
-
-public final class ZipFileIndexEntry implements Comparable<ZipFileIndexEntry> {
-    public static final ZipFileIndexEntry[] EMPTY_ARRAY = {};
-
-    // Directory related
-    String dir;
-    boolean isDir;
-
-    // File related
-    String name;
-
-    int offset;
-    int size;
-    int compressedSize;
-    long javatime;
-
-    private int nativetime;
-
-    public ZipFileIndexEntry(String path) {
-        int separator = path.lastIndexOf(File.separatorChar);
-        if (separator == -1) {
-            dir = "".intern();
-            name = path;
-        } else {
-            dir = path.substring(0, separator).intern();
-            name = path.substring(separator + 1);
-        }
-    }
-
-    public ZipFileIndexEntry(String directory, String name) {
-        this.dir = directory.intern();
-        this.name = name;
-    }
-
-    public String getName() {
-        if (dir == null || dir.length() == 0) {
-            return name;
-        }
-
-        StringBuilder sb = new StringBuilder();
-        sb.append(dir);
-        sb.append(File.separatorChar);
-        sb.append(name);
-        return sb.toString();
-    }
-
-    public String getFileName() {
-        return name;
-    }
-
-    public long getLastModified() {
-        if (javatime == 0) {
-                javatime = dosToJavaTime(nativetime);
-        }
-        return javatime;
-    }
-
-    // From java.util.zip
-    private static long dosToJavaTime(int nativetime) {
-        // Bootstrap build problems prevent me from using the code directly
-        // Convert the raw/native time to a long for now
-        return (long)nativetime;
-    }
-
-    void setNativeTime(int natTime) {
-        nativetime = natTime;
-    }
-
-    public boolean isDirectory() {
-        return isDir;
-    }
-
-    public int compareTo(ZipFileIndexEntry other) {
-        String otherD = other.dir;
-        if (dir != otherD) {
-            int c = dir.compareTo(otherD);
-            if (c != 0)
-                return c;
-        }
-        return name.compareTo(other.name);
-    }
-
-
-    public String toString() {
-        return isDir ? ("Dir:" + dir + " : " + name) :
-            (dir + ":" + name);
-    }
-}
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocClassReader.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -26,10 +26,10 @@
 package com.sun.tools.javadoc;
 
 import com.sun.tools.javac.code.Symbol.PackageSymbol;
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.file.Old199;
 import com.sun.tools.javac.jvm.ClassReader;
 import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JavacFileManager;
-import com.sun.tools.javac.util.Old199;
 
 import java.io.File;
 import java.util.EnumSet;
--- a/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/JavadocTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -29,19 +29,14 @@
 
 import java.util.Collection;
 
-import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.code.Symbol.*;
 import com.sun.tools.javac.comp.*;
-import com.sun.tools.javac.jvm.ClassReader;
-import com.sun.tools.javac.jvm.ClassWriter;
+import com.sun.tools.javac.file.Paths;
 import com.sun.tools.javac.parser.DocCommentScanner;
-import com.sun.tools.javac.util.Paths;
 import com.sun.tools.javac.tree.*;
 import com.sun.tools.javac.tree.JCTree.*;
 import com.sun.tools.javac.util.*;
 
-import com.sun.javadoc.LanguageVersion;
-import static com.sun.javadoc.LanguageVersion.*;
 
 /**
  *  This class could be the main entry point for Javadoc when Javadoc is used as a
@@ -147,7 +142,7 @@
                 } else if (isValidPackageName(name)) {
                     names = names.append(name);
                 } else if (name.endsWith(".java")) {
-                    docenv.error(null, "main.file_not_found", name);;
+                    docenv.error(null, "main.file_not_found", name);
                 } else {
                     docenv.error(null, "main.illegal_package_name", name);
                 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/AnnotationWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,114 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import com.sun.tools.classfile.Annotation;
+import com.sun.tools.classfile.Annotation.Annotation_element_value;
+import com.sun.tools.classfile.Annotation.Array_element_value;
+import com.sun.tools.classfile.Annotation.Class_element_value;
+import com.sun.tools.classfile.Annotation.Enum_element_value;
+import com.sun.tools.classfile.Annotation.Primitive_element_value;
+
+/**
+ *  A writer for writing annotations as text.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class AnnotationWriter extends BasicWriter {
+    static AnnotationWriter instance(Context context) {
+        AnnotationWriter instance = context.get(AnnotationWriter.class);
+        if (instance == null)
+            instance = new AnnotationWriter(context);
+        return instance;
+    }
+
+    protected AnnotationWriter(Context context) {
+        super(context);
+    }
+
+    public void write(Annotation annot) {
+        print("#" + annot.type_index + "(");
+        for (int i = 0; i < annot.num_element_value_pairs; i++) {
+            if (i > 0)
+                print(",");
+            write(annot.element_value_pairs[i]);
+        }
+        print(")");
+    }
+
+    public void write(Annotation.element_value_pair pair) {
+        print("#" + pair.element_name_index + ":");
+        write(pair.value);
+    }
+
+    public void write(Annotation.element_value value) {
+        ev_writer.write(value);
+    }
+
+    element_value_Writer ev_writer = new element_value_Writer();
+
+    class element_value_Writer implements Annotation.element_value.Visitor<Void,Void> {
+        public void write(Annotation.element_value value) {
+            value.accept(this, null);
+        }
+
+        public Void visitPrimitive(Primitive_element_value ev, Void p) {
+            print(((char) ev.tag) + "#" + ev.const_value_index);
+            return null;
+        }
+
+        public Void visitEnum(Enum_element_value ev, Void p) {
+            print(((char) ev.tag) + "#" + ev.type_name_index + ".#" + ev.const_name_index);
+            return null;
+        }
+
+        public Void visitClass(Class_element_value ev, Void p) {
+            print(((char) ev.tag) + "#" + ev.class_info_index);
+            return null;
+        }
+
+        public Void visitAnnotation(Annotation_element_value ev, Void p) {
+            print((char) ev.tag);
+            AnnotationWriter.this.write(ev.annotation_value);
+            return null;
+        }
+
+        public Void visitArray(Array_element_value ev, Void p) {
+            print("[");
+            for (int i = 0; i < ev.num_values; i++) {
+                if (i > 0)
+                    print(",");
+                write(ev.values[i]);
+            }
+            print("]");
+            return null;
+        }
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/AttributeWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,679 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import java.util.Formatter;
+
+import com.sun.tools.classfile.AccessFlags;
+import com.sun.tools.classfile.AnnotationDefault_attribute;
+import com.sun.tools.classfile.Attribute;
+import com.sun.tools.classfile.Attributes;
+import com.sun.tools.classfile.CharacterRangeTable_attribute;
+import com.sun.tools.classfile.Code_attribute;
+import com.sun.tools.classfile.CompilationID_attribute;
+import com.sun.tools.classfile.ConstantPool;
+import com.sun.tools.classfile.ConstantPoolException;
+import com.sun.tools.classfile.ConstantValue_attribute;
+import com.sun.tools.classfile.DefaultAttribute;
+import com.sun.tools.classfile.Deprecated_attribute;
+import com.sun.tools.classfile.EnclosingMethod_attribute;
+import com.sun.tools.classfile.Exceptions_attribute;
+import com.sun.tools.classfile.Field;
+import com.sun.tools.classfile.InnerClasses_attribute;
+import com.sun.tools.classfile.LineNumberTable_attribute;
+import com.sun.tools.classfile.LocalVariableTable_attribute;
+import com.sun.tools.classfile.LocalVariableTypeTable_attribute;
+import com.sun.tools.classfile.ModuleExportTable_attribute;
+import com.sun.tools.classfile.ModuleMemberTable_attribute;
+import com.sun.tools.classfile.Module_attribute;
+import com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute;
+import com.sun.tools.classfile.RuntimeInvisibleParameterAnnotations_attribute;
+import com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute;
+import com.sun.tools.classfile.RuntimeVisibleParameterAnnotations_attribute;
+import com.sun.tools.classfile.Signature_attribute;
+import com.sun.tools.classfile.SourceDebugExtension_attribute;
+import com.sun.tools.classfile.SourceFile_attribute;
+import com.sun.tools.classfile.SourceID_attribute;
+import com.sun.tools.classfile.StackMapTable_attribute;
+import com.sun.tools.classfile.StackMap_attribute;
+import com.sun.tools.classfile.Synthetic_attribute;
+
+import static com.sun.tools.classfile.AccessFlags.*;
+
+/*
+ *  A writer for writing Attributes as text.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class AttributeWriter extends BasicWriter
+        implements Attribute.Visitor<Void,Void>
+{
+    static AttributeWriter instance(Context context) {
+        AttributeWriter instance = context.get(AttributeWriter.class);
+        if (instance == null)
+            instance = new AttributeWriter(context);
+        return instance;
+    }
+
+    protected AttributeWriter(Context context) {
+        super(context);
+        context.put(AttributeWriter.class, this);
+        annotationWriter = AnnotationWriter.instance(context);
+        codeWriter = CodeWriter.instance(context);
+        constantWriter = ConstantWriter.instance(context);
+        options = Options.instance(context);
+    }
+
+    public void write(Object owner, Attribute attr, ConstantPool constant_pool) {
+        if (attr != null) {
+            // null checks
+            owner.getClass();
+            constant_pool.getClass();
+            this.constant_pool = constant_pool;
+            this.owner = owner;
+            attr.accept(this, null);
+        }
+    }
+
+    public void write(Object owner, Attributes attrs, ConstantPool constant_pool) {
+        if (attrs != null) {
+            // null checks
+            owner.getClass();
+            constant_pool.getClass();
+            this.constant_pool = constant_pool;
+            this.owner = owner;
+            for (Attribute attr: attrs)
+                attr.accept(this, null);
+        }
+    }
+
+    public Void visitDefault(DefaultAttribute attr, Void ignore) {
+        byte[] data = attr.info;
+        int i = 0;
+        int j = 0;
+        print("  ");
+        try {
+            print(attr.getName(constant_pool));
+        } catch (ConstantPoolException e) {
+            report(e);
+            print("attribute name = #" + attr.attribute_name_index);
+        }
+        print(": ");
+        println("length = 0x" + toHex(attr.info.length));
+
+        print("   ");
+
+        while (i < data.length) {
+            print(toHex(data[i], 2));
+
+            j++;
+            if (j == 16) {
+                println();
+                print("   ");
+                j = 0;
+            } else {
+                print(" ");
+            }
+            i++;
+        }
+        println();
+        return null;
+    }
+
+    public Void visitAnnotationDefault(AnnotationDefault_attribute attr, Void ignore) {
+        println("  AnnotationDefault: ");
+        print("    default_value: ");
+        annotationWriter.write(attr.default_value);
+        return null;
+    }
+
+    public Void visitCharacterRangeTable(CharacterRangeTable_attribute attr, Void ignore) {
+        print("  CharacterRangeTable: ");
+        for (int i = 0; i < attr.character_range_table.length; i++) {
+            CharacterRangeTable_attribute.Entry e = attr.character_range_table[i];
+            print("    " + e.start_pc + ", " +
+                    e.end_pc + ", " +
+                    Integer.toHexString(e.character_range_start) + ", " +
+                    Integer.toHexString(e.character_range_end) + ", " +
+                    Integer.toHexString(e.flags) +
+                    "\t// ");
+            print(e.start_pc + ", " +
+                    e.end_pc + ", " +
+                    (e.character_range_start >> 10) + ":" + (e.character_range_start & 0x3ff) + ", " +
+                    (e.character_range_end >> 10) + ":" + (e.character_range_end & 0x3ff));
+            if ((e.flags & CharacterRangeTable_attribute.CRT_STATEMENT) != 0)
+                print(", statement");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_BLOCK) != 0)
+                print(", block");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_ASSIGNMENT) != 0)
+                print(", assignment");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_FLOW_CONTROLLER) != 0)
+                print(", flow-controller");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_FLOW_TARGET) != 0)
+                print(", flow-target");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_INVOKE) != 0)
+                print(", invoke");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_CREATE) != 0)
+                print(", create");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_BRANCH_TRUE) != 0)
+                print(", branch-true");
+            if ((e.flags & CharacterRangeTable_attribute.CRT_BRANCH_FALSE) != 0)
+                print(", branch-false");
+
+
+
+        }
+        return null;
+    }
+
+    public Void visitCode(Code_attribute attr, Void ignore) {
+        codeWriter.write(attr, constant_pool);
+        println();
+        return null;
+    }
+
+    public Void visitCompilationID(CompilationID_attribute attr, Void ignore) {
+        constantWriter.write(attr.compilationID_index);
+        return null;
+    }
+
+    public Void visitConstantValue(ConstantValue_attribute attr, Void ignore) {
+        if (options.compat) // BUG 6622216 javap names some attributes incorrectly
+            print("  Constant value: ");
+        else
+            print("  ConstantValue: ");
+        constantWriter.write(attr.constantvalue_index);
+        if (!options.compat) // BUG 6622232 javap gets whitespace confused
+            println();
+        return null;
+    }
+
+    public Void visitDeprecated(Deprecated_attribute attr, Void ignore) {
+        if (!(options.compat && owner instanceof Field)) // BUG 6622232 javap gets whitespace confused
+            print("  ");
+        println("Deprecated: true");
+        return null;
+    }
+
+    public Void visitEnclosingMethod(EnclosingMethod_attribute attr, Void ignore) {
+        print("  EnclosingMethod: #" + attr.class_index + ".#" + attr.method_index
+                + "\t// " + getJavaClassName(attr));
+        if (attr.method_index != 0)
+            print("." + getMethodName(attr));
+        println();
+        return null;
+    }
+
+    private String getJavaClassName(EnclosingMethod_attribute a) {
+        try {
+            return getJavaName(a.getClassName(constant_pool));
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    private String getMethodName(EnclosingMethod_attribute a) {
+        try {
+            return a.getMethodName(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitExceptions(Exceptions_attribute attr, Void ignore) {
+        println("  Exceptions: ");
+        print("   throws ");
+        for (int i = 0; i < attr.number_of_exceptions; i++) {
+            if (i > 0)
+                print(", ");
+            print(getJavaException(attr, i));
+        }
+        if (!options.compat) // BUG 6622232 javap gets whitespace confused
+            println();
+        return null;
+    }
+
+    private String getJavaException(Exceptions_attribute attr, int index) {
+        try {
+            return getJavaName(attr.getException(index, constant_pool));
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitInnerClasses(InnerClasses_attribute attr, Void ignore) {
+        boolean first = true;
+        if (options.compat) {
+            writeInnerClassHeader();
+            first = false;
+        }
+        for (int i = 0 ; i < attr.classes.length; i++) {
+            InnerClasses_attribute.Info info = attr.classes[i];
+            //access
+            AccessFlags access_flags = info.inner_class_access_flags;
+            if (options.compat) {
+                // BUG 6622215: javap ignores certain relevant access flags
+                access_flags = access_flags.ignore(ACC_STATIC | ACC_PROTECTED | ACC_PRIVATE | ACC_INTERFACE | ACC_SYNTHETIC | ACC_ENUM);
+                // BUG 6622232: javap gets whitespace confused
+                print("   ");
+            }
+            if (options.checkAccess(access_flags)) {
+                if (first) {
+                    writeInnerClassHeader();
+                    first = false;
+                }
+                if (!options.compat) // BUG 6622232: javap gets whitespace confused
+                    print("   ");
+                for (String name: access_flags.getInnerClassModifiers())
+                    print(name + " ");
+                if (info.inner_name_index!=0) {
+                    print("#" + info.inner_name_index + "= ");
+                }
+                print("#" + info.inner_class_info_index);
+                if (info.outer_class_info_index != 0) {
+                    print(" of #" + info.outer_class_info_index);
+                }
+                print("; //");
+                if (info.inner_name_index != 0) {
+                    print(getInnerName(constant_pool, info) + "=");
+                }
+                constantWriter.write(info.inner_class_info_index);
+                if (info.outer_class_info_index != 0) {
+                    print(" of ");
+                    constantWriter.write(info.outer_class_info_index);
+                }
+                println();
+            }
+        }
+        return null;
+    }
+
+    String getInnerName(ConstantPool constant_pool, InnerClasses_attribute.Info info) {
+        try {
+            return info.getInnerName(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    private void writeInnerClassHeader() {
+        print("  ");
+        if (options.compat) // BUG 6622216: javap names some attributes incorrectly
+            print("InnerClass");
+        else
+            print("InnerClasses");
+        println(": ");
+    }
+
+    public Void visitLineNumberTable(LineNumberTable_attribute attr, Void ignore) {
+        println("  LineNumberTable: ");
+        for (LineNumberTable_attribute.Entry entry: attr.line_number_table) {
+            println("   line " + entry.line_number + ": " + entry.start_pc);
+        }
+        return null;
+    }
+
+    public Void visitLocalVariableTable(LocalVariableTable_attribute attr, Void ignore) {
+        println("  LocalVariableTable: ");
+        println("   Start  Length  Slot  Name   Signature");
+
+        for (LocalVariableTable_attribute.Entry entry : attr.local_variable_table) {
+            Formatter formatter = new Formatter();
+            println(formatter.format("%8d %7d %5d %5s   %s",
+                    entry.start_pc, entry.length, entry.index,
+                    constantWriter.stringValue(entry.name_index),
+                    constantWriter.stringValue(entry.descriptor_index)));
+        }
+        return null;
+    }
+
+    public Void visitLocalVariableTypeTable(LocalVariableTypeTable_attribute attr, Void ignore) {
+        println("  LocalVariableTypeTable: ");
+        println("   Start  Length  Slot  Name   Signature");
+
+        for (LocalVariableTypeTable_attribute.Entry entry : attr.local_variable_table) {
+            Formatter formatter = new Formatter();
+            println(formatter.format("%8d %7d %5d %5s   %s",
+                    entry.start_pc, entry.length, entry.index,
+                    constantWriter.stringValue(entry.name_index),
+                    constantWriter.stringValue(entry.signature_index)));
+        }
+        return null;
+    }
+
+    public Void visitModule(Module_attribute attr, Void ignore) {
+        println("  Module: #" + attr.module_name + "\t// " + getModuleName(attr));
+        return null;
+    }
+
+    String getModuleName(Module_attribute attr) {
+        try {
+            return attr.getModuleName(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitModuleExportTable(ModuleExportTable_attribute attr, Void ignore) {
+        println("  ModuleExportTable:");
+        println("    Types: (" + attr.export_type_table.length + ")");
+        for (int i = 0; i < attr.export_type_table.length; i++) {
+            println("      #" + attr.export_type_table[i] + "\t// " + getExportTypeName(attr, i));
+        }
+        return null;
+    }
+
+    String getExportTypeName(ModuleExportTable_attribute attr, int index) {
+        try {
+            return attr.getExportTypeName(index, constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitModuleMemberTable(ModuleMemberTable_attribute attr, Void ignore) {
+        println("  ModuleMemberTable:");
+        println("    Packages: (" + attr.package_member_table.length + ")");
+        for (int i = 0; i < attr.package_member_table.length; i++) {
+            println("      #" + attr.package_member_table[i] + "\t// " + getPackageMemberName(attr, i));
+        }
+        return null;
+    }
+
+    String getPackageMemberName(ModuleMemberTable_attribute attr, int index) {
+        try {
+            return attr.getPackageMemberName(index, constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitRuntimeVisibleAnnotations(RuntimeVisibleAnnotations_attribute attr, Void ignore) {
+        println("  RuntimeVisibleAnnotations: ");
+        for (int i = 0; i < attr.annotations.length; i++) {
+            print("    " + i + ": ");
+            annotationWriter.write(attr.annotations[i]);
+            println();
+        }
+        return null;
+    }
+
+    public Void visitRuntimeInvisibleAnnotations(RuntimeInvisibleAnnotations_attribute attr, Void ignore) {
+        println("  RuntimeInvisibleAnnotations: ");
+        for (int i = 0; i < attr.annotations.length; i++) {
+            print("    " + i + ": ");
+            annotationWriter.write(attr.annotations[i]);
+            println();
+        }
+        return null;
+    }
+
+    public Void visitRuntimeVisibleParameterAnnotations(RuntimeVisibleParameterAnnotations_attribute attr, Void ignore) {
+        println("  RuntimeVisibleParameterAnnotations: ");
+        for (int param = 0; param < attr.parameter_annotations.length; param++) {
+            println("    parameter " + param + ": ");
+            for (int i = 0; i < attr.parameter_annotations[param].length; i++) {
+                print("    " + i + ": ");
+                annotationWriter.write(attr.parameter_annotations[param][i]);
+                println();
+            }
+        }
+        return null;
+    }
+
+    public Void visitRuntimeInvisibleParameterAnnotations(RuntimeInvisibleParameterAnnotations_attribute attr, Void ignore) {
+        println("  RuntimeInvisibleParameterAnnotations: ");
+        for (int param = 0; param < attr.parameter_annotations.length; param++) {
+            println("    " + param + ": ");
+            for (int i = 0; i < attr.parameter_annotations[param].length; i++) {
+                print("    " + i + ": ");
+                annotationWriter.write(attr.parameter_annotations[param][i]);
+                println();
+            }
+        }
+        return null;
+    }
+
+    public Void visitSignature(Signature_attribute attr, Void ignore) {
+        println("  Signature: #" + attr.signature_index + "\t// " + getSignature(attr));
+        return null;
+    }
+
+    String getSignature(Signature_attribute info) {
+        try {
+            return info.getSignature(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitSourceDebugExtension(SourceDebugExtension_attribute attr, Void ignore) {
+        println("  SourceDebugExtension: " + attr.getValue());
+        return null;
+    }
+
+    public Void visitSourceFile(SourceFile_attribute attr, Void ignore) {
+        println("  SourceFile: \"" + getSourceFile(attr) + "\"");
+        return null;
+    }
+
+    private String getSourceFile(SourceFile_attribute attr) {
+        try {
+            return attr.getSourceFile(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    public Void visitSourceID(SourceID_attribute attr, Void ignore) {
+        constantWriter.write(attr.sourceID_index);
+        return null;
+    }
+
+    public Void visitStackMap(StackMap_attribute attr, Void ignore) {
+        println("  StackMap: number_of_entries = " + attr.number_of_entries);
+
+        StackMapTableWriter w = new StackMapTableWriter();
+        for (StackMapTable_attribute.stack_map_frame entry : attr.entries) {
+            w.write(entry);
+        }
+        println();
+        return null;
+    }
+
+    public Void visitStackMapTable(StackMapTable_attribute attr, Void ignore) {
+        println("  StackMapTable: number_of_entries = " + attr.number_of_entries);
+
+        StackMapTableWriter w = new StackMapTableWriter();
+        for (StackMapTable_attribute.stack_map_frame entry : attr.entries) {
+            w.write(entry);
+        }
+        println();
+        return null;
+    }
+
+    class StackMapTableWriter // also handles CLDC StackMap attributes
+            implements StackMapTable_attribute.stack_map_frame.Visitor<Void,Void> {
+        public void write(StackMapTable_attribute.stack_map_frame frame) {
+            frame.accept(this, null);
+        }
+
+        public Void visit_same_frame(StackMapTable_attribute.same_frame frame, Void p) {
+            printHeader(frame);
+            println(" /* same */");
+            return null;
+        }
+
+        public Void visit_same_locals_1_stack_item_frame(StackMapTable_attribute.same_locals_1_stack_item_frame frame, Void p) {
+            printHeader(frame);
+            println(" /* same_locals_1_stack_item */");
+            printMap("stack", frame.stack);
+            return null;
+        }
+
+        public Void visit_same_locals_1_stack_item_frame_extended(StackMapTable_attribute.same_locals_1_stack_item_frame_extended frame, Void p) {
+            printHeader(frame);
+            println(" /* same_locals_1_stack_item_frame_extended */");
+            println("     offset_delta = " + frame.offset_delta);
+            printMap("stack", frame.stack);
+            return null;
+        }
+
+        public Void visit_chop_frame(StackMapTable_attribute.chop_frame frame, Void p) {
+            printHeader(frame);
+            println(" /* chop */");
+            println("     offset_delta = " + frame.offset_delta);
+            return null;
+        }
+
+        public Void visit_same_frame_extended(StackMapTable_attribute.same_frame_extended frame, Void p) {
+            printHeader(frame);
+            println(" /* same_frame_extended */");
+            println("     offset_delta = " + frame.offset_delta);
+            return null;
+        }
+
+        public Void visit_append_frame(StackMapTable_attribute.append_frame frame, Void p) {
+            printHeader(frame);
+            println(" /* append */");
+            println("     offset_delta = " + frame.offset_delta);
+            printMap("locals", frame.locals);
+            return null;
+        }
+
+        public Void visit_full_frame(StackMapTable_attribute.full_frame frame, Void p) {
+            printHeader(frame);
+            if (frame instanceof StackMap_attribute.stack_map_frame) {
+                println("     offset = " + frame.offset_delta);
+            } else {
+                println(" /* full_frame */");
+                println("     offset_delta = " + frame.offset_delta);
+            }
+            printMap("locals", frame.locals);
+            printMap("stack", frame.stack);
+            return null;
+        }
+
+        void printHeader(StackMapTable_attribute.stack_map_frame frame) {
+            print("   frame_type = " + frame.frame_type);
+        }
+
+        void printMap(String name, StackMapTable_attribute.verification_type_info[] map) {
+            print("     " + name + " = [");
+            for (int i = 0; i < map.length; i++) {
+                StackMapTable_attribute.verification_type_info info = map[i];
+                int tag = info.tag;
+                switch (tag) {
+                    case StackMapTable_attribute.verification_type_info.ITEM_Object:
+                        print(" ");
+                        constantWriter.write(((StackMapTable_attribute.Object_variable_info) info).cpool_index);
+                        break;
+                    case StackMapTable_attribute.verification_type_info.ITEM_Uninitialized:
+                        print(" " + mapTypeName(tag));
+                        print(" " + ((StackMapTable_attribute.Uninitialized_variable_info) info).offset);
+                        break;
+                    default:
+                        print(" " + mapTypeName(tag));
+                }
+                print(i == (map.length - 1) ? " " : ",");
+            }
+            println("]");
+        }
+
+        String mapTypeName(int tag) {
+            switch (tag) {
+            case StackMapTable_attribute.verification_type_info.ITEM_Top:
+                return "top";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Integer:
+                return "int";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Float:
+                return "float";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Long:
+                return "long";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Double:
+                return "double";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Null:
+                return "null";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_UninitializedThis:
+                return "this";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Object:
+                return "CP";
+
+            case StackMapTable_attribute.verification_type_info.ITEM_Uninitialized:
+                return "uninitialized";
+
+            default:
+                report("unrecognized verification_type_info tag: " + tag);
+                return "[tag:" + tag + "]";
+            }
+        }
+    }
+
+    public Void visitSynthetic(Synthetic_attribute attr, Void ignore) {
+        println("Synthetic: true");
+        return null;
+    }
+
+    static String getJavaName(String name) {
+        return name.replace('/', '.');
+    }
+
+    String toHex(byte b, int w) {
+        if (options.compat) // BUG 6622260: javap prints negative bytes incorrectly in hex
+            return toHex((int) b, w);
+        else
+            return toHex(b & 0xff, w);
+    }
+
+    static String toHex(int i) {
+        return Integer.toString(i, 16).toUpperCase();
+    }
+
+    static String toHex(int i, int w) {
+        String s = Integer.toHexString(i).toUpperCase();
+        while (s.length() < w)
+            s = "0" + s;
+        return s.toUpperCase();
+    }
+
+    private AnnotationWriter annotationWriter;
+    private CodeWriter codeWriter;
+    private ConstantWriter constantWriter;
+    private Options options;
+
+    private ConstantPool constant_pool;
+    private Object owner;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/BasicWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,131 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import java.io.PrintWriter;
+
+import com.sun.tools.classfile.AttributeException;
+import com.sun.tools.classfile.ConstantPoolException;
+import com.sun.tools.classfile.DescriptorException;
+
+/*
+ *  A writer similar to a PrintWriter but which does not hide exceptions.
+ *  The standard print calls are line-buffered; report calls write messages directly.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class BasicWriter {
+    protected BasicWriter(Context context) {
+        lineWriter = LineWriter.instance(context);
+        out = context.get(PrintWriter.class);
+    }
+
+    protected void print(String s) {
+        lineWriter.print(s);
+    }
+
+    protected void print(Object o) {
+        lineWriter.print(o == null ? null : o.toString());
+    }
+
+    protected void println() {
+        lineWriter.println();
+    }
+
+    protected void println(String s) {
+        lineWriter.print(s);
+        lineWriter.println();
+    }
+
+    protected void println(Object o) {
+        lineWriter.print(o == null ? null : o.toString());
+        lineWriter.println();
+    }
+
+    protected String report(AttributeException e) {
+        out.println("Error: " + e.getMessage()); // i18n?
+        return "???";
+    }
+
+    protected String report(ConstantPoolException e) {
+        out.println("Error: " + e.getMessage()); // i18n?
+        return "???";
+    }
+
+    protected String report(DescriptorException e) {
+        out.println("Error: " + e.getMessage()); // i18n?
+        return "???";
+    }
+
+    protected String report(String msg) {
+        out.println("Error: " + msg); // i18n?
+        return "???";
+    }
+
+    private LineWriter lineWriter;
+    private PrintWriter out;
+
+    private static class LineWriter {
+        static LineWriter instance(Context context) {
+            LineWriter instance = context.get(LineWriter.class);
+            if (instance == null)
+                instance = new LineWriter(context);
+            return instance;
+        }
+
+        protected LineWriter(Context context) {
+            context.put(LineWriter.class, this);
+            out = context.get(PrintWriter.class);
+            buffer = new StringBuilder();
+        }
+
+        protected void print(String s) {
+            if (s == null)
+                s = "null";
+            for (int i = 0; i < s.length(); i++) {
+                char c = s.charAt(i);
+                if (c == '\n') {
+                    println();
+                } else {
+                    buffer.append(c);
+                }
+            }
+
+        }
+
+        protected void println() {
+            out.println(buffer);
+            buffer.setLength(0);
+        }
+
+        private PrintWriter out;
+        private StringBuilder buffer;
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/ClassWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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.  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.tools.javap;
+
+import java.util.Collection;
+import java.util.List;
+
+import com.sun.tools.classfile.AccessFlags;
+import com.sun.tools.classfile.Attribute;
+import com.sun.tools.classfile.Attributes;
+import com.sun.tools.classfile.ClassFile;
+import com.sun.tools.classfile.Code_attribute;
+import com.sun.tools.classfile.ConstantPool;
+import com.sun.tools.classfile.ConstantPoolException;
+import com.sun.tools.classfile.Descriptor;
+import com.sun.tools.classfile.DescriptorException;
+import com.sun.tools.classfile.Exceptions_attribute;
+import com.sun.tools.classfile.Field;
+import com.sun.tools.classfile.Method;
+import com.sun.tools.classfile.Signature;
+import com.sun.tools.classfile.Signature_attribute;
+import com.sun.tools.classfile.SourceFile_attribute;
+import com.sun.tools.classfile.Type;
+
+import static com.sun.tools.classfile.AccessFlags.*;
+
+/*
+ *  The main javap class to write the contents of a class file as text.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ClassWriter extends BasicWriter {
+    static ClassWriter instance(Context context) {
+        ClassWriter instance = context.get(ClassWriter.class);
+        if (instance == null)
+            instance = new ClassWriter(context);
+        return instance;
+    }
+
+    protected ClassWriter(Context context) {
+        super(context);
+        context.put(ClassWriter.class, this);
+        options = Options.instance(context);
+        attrWriter = AttributeWriter.instance(context);
+        codeWriter = CodeWriter.instance(context);
+        constantWriter = ConstantWriter.instance(context);
+    }
+
+    ClassFile getClassFile() {
+        return classFile;
+    }
+
+    Method getMethod() {
+        return method;
+    }
+
+    public void write(ClassFile cf) {
+        classFile = cf;
+        constant_pool = classFile.constant_pool;
+
+        Attribute sfa = cf.getAttribute(Attribute.SourceFile);
+        if (sfa instanceof SourceFile_attribute) {
+            println("Compiled from \"" + getSourceFile((SourceFile_attribute) sfa) + "\"");
+        }
+
+        String name = getJavaName(classFile);
+        AccessFlags flags = cf.access_flags;
+
+        writeModifiers(flags.getClassModifiers());
+
+        if (classFile.isClass())
+            print("class ");
+        else if (classFile.isInterface())
+            print("interface ");
+
+        print(name);
+
+        Signature_attribute sigAttr = getSignature(cf.attributes);
+        if (sigAttr == null) {
+            // use info from class file header
+            if (classFile.isClass()) {
+                if (classFile.super_class != 0 ) {
+                    String sn = getJavaSuperclassName(cf);
+                    if (!sn.equals("java.lang.Object") || options.compat) { // BUG XXXXXXXX
+                        print(" extends ");
+                        print(sn);
+                    }
+                }
+            }
+            for (int i = 0; i < classFile.interfaces.length; i++) {
+                print(i == 0 ? (classFile.isClass() ? " implements " : " extends ") : ",");
+                print(getJavaInterfaceName(classFile, i));
+            }
+        } else {
+            try {
+                Type t = sigAttr.getParsedSignature().getType(constant_pool);
+                // The signature parser cannot disambiguate between a
+                // FieldType and a ClassSignatureType that only contains a superclass type.
+                if (t instanceof Type.ClassSigType)
+                    print(t);
+                else if (!t.isObject()) {
+                    print(" extends ");
+                    print(t);
+                }
+            } catch (ConstantPoolException e) {
+                print(report(e));
+            }
+        }
+
+        if (options.verbose) {
+            println();
+            attrWriter.write(cf, cf.attributes, constant_pool);
+            println("  minor version: " + cf.minor_version);
+            println("  major version: " + cf.major_version);
+            if (!options.compat)
+              writeList("  flags: ", flags.getClassFlags(), NEWLINE);
+            constantWriter.writeConstantPool();
+            println();
+        } else {
+            if (!options.compat)
+                print(" ");
+        }
+
+        println("{");
+        writeFields();
+        writeMethods();
+        println("}");
+        println();
+    }
+
+    void writeFields() {
+        for (Field f: classFile.fields) {
+            writeField(f);
+        }
+    }
+
+    void writeField(Field f) {
+        if (!options.checkAccess(f.access_flags))
+            return;
+
+        if (!(options.showLineAndLocalVariableTables
+                || options.showDisassembled
+                || options.verbose
+                || options.showInternalSignatures
+                || options.showAllAttrs)) {
+            print("    ");
+        }
+
+        AccessFlags flags = f.access_flags;
+        writeModifiers(flags.getFieldModifiers());
+        Signature_attribute sigAttr = getSignature(f.attributes);
+        if (sigAttr == null)
+            print(getFieldType(f.descriptor));
+        else {
+            try {
+                Type t = sigAttr.getParsedSignature().getType(constant_pool);
+                print(t);
+            } catch (ConstantPoolException e) {
+                // report error?
+                // fall back on non-generic descriptor
+                print(getFieldType(f.descriptor));
+            }
+        }
+        print(" ");
+        print(getFieldName(f));
+        print(";");
+        println();
+
+        if (options.showInternalSignatures)
+            println("  Signature: " + getValue(f.descriptor));
+
+        if (options.verbose && !options.compat)
+            writeList("  flags: ", flags.getFieldFlags(), NEWLINE);
+
+        if (options.showAllAttrs) {
+            for (Attribute attr: f.attributes)
+                attrWriter.write(f, attr, constant_pool);
+            println();
+        }
+
+        if (options.showDisassembled || options.showLineAndLocalVariableTables)
+            println();
+    }
+
+    void writeMethods() {
+        for (Method m: classFile.methods)
+            writeMethod(m);
+    }
+
+    void writeMethod(Method m) {
+        if (!options.checkAccess(m.access_flags))
+            return;
+
+        method = m;
+
+        if (!(options.showLineAndLocalVariableTables
+                || options.showDisassembled
+                || options.verbose
+                || options.showInternalSignatures
+                || options.showAllAttrs)) {
+            print("    ");
+        }
+
+        AccessFlags flags = m.access_flags;
+
+        Descriptor d;
+        Type.MethodType methodType;
+        List<? extends Type> methodExceptions;
+
+        Signature_attribute sigAttr = getSignature(m.attributes);
+        if (sigAttr == null) {
+            d = m.descriptor;
+            methodType = null;
+            methodExceptions = null;
+        } else {
+            Signature methodSig = sigAttr.getParsedSignature();
+            d = methodSig;
+            try {
+                methodType = (Type.MethodType) methodSig.getType(constant_pool);
+                methodExceptions = methodType.throwsTypes;
+                if (methodExceptions != null && methodExceptions.size() == 0)
+                    methodExceptions = null;
+            } catch (ConstantPoolException e) {
+                // report error?
+                // fall back on standard descriptor
+                methodType = null;
+                methodExceptions = null;
+            }
+        }
+
+        writeModifiers(flags.getMethodModifiers());
+        if (methodType != null) {
+            writeListIfNotEmpty("<", methodType.typeArgTypes, "> ");
+        }
+        if (getName(m).equals("<init>")) {
+            print(getJavaName(classFile));
+            print(getParameterTypes(d, flags));
+        } else if (getName(m).equals("<clinit>")) {
+            print("{}");
+        } else {
+            print(getReturnType(d));
+            print(" ");
+            print(getName(m));
+            print(getParameterTypes(d, flags));
+        }
+
+        Attribute e_attr = m.attributes.get(Attribute.Exceptions);
+        if (e_attr != null) { // if there are generic exceptions, there must be erased exceptions
+            if (e_attr instanceof Exceptions_attribute) {
+                Exceptions_attribute exceptions = (Exceptions_attribute) e_attr;
+                if (options.compat) { // Bug XXXXXXX whitespace
+                    if (!(options.showLineAndLocalVariableTables
+                            || options.showDisassembled
+                            || options.verbose
+                            || options.showInternalSignatures
+                            || options.showAllAttrs)) {
+                        print("    ");
+                    }
+                    print("  ");
+                }
+                print(" throws ");
+                if (methodExceptions != null) { // use generic list if available
+                    writeList("", methodExceptions, "");
+                } else {
+                    for (int i = 0; i < exceptions.number_of_exceptions; i++) {
+                        if (i > 0)
+                            print(", ");
+                        print(getJavaException(exceptions, i));
+                    }
+                }
+            } else {
+                report("Unexpected or invalid value for Exceptions attribute");
+            }
+        }
+
+        print(";");
+        println();
+
+        if (options.showInternalSignatures)
+            println("  Signature: " + getValue(m.descriptor));
+
+        if (options.verbose && !options.compat)
+            writeList("  flags: ", flags.getMethodFlags(), NEWLINE);
+
+        Code_attribute code = null;
+        Attribute c_attr = m.attributes.get(Attribute.Code);
+        if (c_attr != null) {
+            if (c_attr instanceof Code_attribute)
+                code = (Code_attribute) c_attr;
+            else
+                report("Unexpected or invalid value for Code attribute");
+        }
+
+        if (options.showDisassembled && !options.showAllAttrs) {
+            if (code != null) {
+                println("  Code:");
+                codeWriter.writeInstrs(code);
+                codeWriter.writeExceptionTable(code);
+            }
+            println();
+        }
+
+        if (options.showLineAndLocalVariableTables) {
+            if (code != null)
+                attrWriter.write(code, code.attributes.get(Attribute.LineNumberTable), constant_pool);
+            println();
+            if (code != null)
+                attrWriter.write(code, code.attributes.get(Attribute.LocalVariableTable), constant_pool);
+            println();
+            println();
+        }
+
+        if (options.showAllAttrs) {
+            Attribute[] attrs = m.attributes.attrs;
+            for (Attribute attr: attrs)
+                attrWriter.write(m, attr, constant_pool);
+
+//            // the following condition is to mimic old javap
+//            if (!(attrs.length > 0 &&
+//                    attrs[attrs.length - 1] instanceof Exceptions_attribute))
+            println();
+        }
+    }
+
+    void writeModifiers(Collection<String> items) {
+        for (Object item: items) {
+            print(item);
+            print(" ");
+        }
+    }
+
+    void writeList(String prefix, Collection<?> items, String suffix) {
+        print(prefix);
+        String sep = "";
+        for (Object item: items) {
+            print(sep);
+            print(item);
+            sep = ", ";
+        }
+        print(suffix);
+    }
+
+    void writeListIfNotEmpty(String prefix, List<?> items, String suffix) {
+        if (items != null && items.size() > 0)
+            writeList(prefix, items, suffix);
+    }
+
+    Signature_attribute getSignature(Attributes attributes) {
+        if (options.compat) // javap does not recognize recent attributes
+            return null;
+        return (Signature_attribute) attributes.get(Attribute.Signature);
+    }
+
+    String adjustVarargs(AccessFlags flags, String params) {
+        if (flags.is(ACC_VARARGS) && !options.compat) {
+            int i = params.lastIndexOf("[]");
+            if (i > 0)
+                return params.substring(0, i) + "..." + params.substring(i+2);
+        }
+
+        return params;
+    }
+
+    String getJavaName(ClassFile cf) {
+        try {
+            return getJavaName(cf.getName());
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getJavaSuperclassName(ClassFile cf) {
+        try {
+            return getJavaName(cf.getSuperclassName());
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getJavaInterfaceName(ClassFile cf, int index) {
+        try {
+            return getJavaName(cf.getInterfaceName(index));
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getFieldType(Descriptor d) {
+        try {
+            return d.getFieldType(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        } catch (DescriptorException e) {
+            return report(e);
+        }
+    }
+
+    String getReturnType(Descriptor d) {
+        try {
+            return d.getReturnType(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        } catch (DescriptorException e) {
+            return report(e);
+        }
+    }
+
+    String getParameterTypes(Descriptor d, AccessFlags flags) {
+        try {
+            return adjustVarargs(flags, d.getParameterTypes(constant_pool));
+        } catch (ConstantPoolException e) {
+            return report(e);
+        } catch (DescriptorException e) {
+            return report(e);
+        }
+    }
+
+    String getJavaException(Exceptions_attribute attr, int index) {
+        try {
+            return getJavaName(attr.getException(index, constant_pool));
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getValue(Descriptor d) {
+        try {
+            return d.getValue(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getFieldName(Field f) {
+        try {
+            return f.getName(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    String getName(Method m) {
+        try {
+            return m.getName(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    static String getJavaName(String name) {
+        return name.replace('/', '.');
+    }
+
+    String getSourceFile(SourceFile_attribute attr) {
+        try {
+            return attr.getSourceFile(constant_pool);
+        } catch (ConstantPoolException e) {
+            return report(e);
+        }
+    }
+
+    private Options options;
+    private AttributeWriter attrWriter;
+    private CodeWriter codeWriter;
+    private ConstantWriter constantWriter;
+    private ClassFile classFile;
+    private ConstantPool constant_pool;
+    private Method method;
+    private static final String NEWLINE = System.getProperty("line.separator", "\n");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/CodeWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,344 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import com.sun.tools.classfile.AccessFlags;
+import com.sun.tools.classfile.Code_attribute;
+import com.sun.tools.classfile.ConstantPool;
+import com.sun.tools.classfile.ConstantPoolException;
+import com.sun.tools.classfile.DescriptorException;
+import com.sun.tools.classfile.Method;
+
+import static com.sun.tools.classfile.OpCodes.*;
+
+/*
+ *  Write the contents of a Code attribute.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+class CodeWriter extends BasicWriter {
+    static CodeWriter instance(Context context) {
+        CodeWriter instance = context.get(CodeWriter.class);
+        if (instance == null)
+            instance = new CodeWriter(context);
+        return instance;
+    }
+
+    protected CodeWriter(Context context) {
+        super(context);
+        context.put(CodeWriter.class, this);
+        attrWriter = AttributeWriter.instance(context);
+        classWriter = ClassWriter.instance(context);
+        constantWriter = ConstantWriter.instance(context);
+    }
+
+    void write(Code_attribute attr, ConstantPool constant_pool) {
+        println("  Code:");
+        writeVerboseHeader(attr, constant_pool);
+        writeInstrs(attr);
+        writeExceptionTable(attr);
+        attrWriter.write(attr, attr.attributes, constant_pool);
+    }
+
+    public void writeVerboseHeader(Code_attribute attr, ConstantPool constant_pool) {
+        Method method = classWriter.getMethod();
+        String argCount;
+        try {
+            int n = method.descriptor.getParameterCount(constant_pool);
+            if (!method.access_flags.is(AccessFlags.ACC_STATIC))
+                ++n;  // for 'this'
+            argCount = Integer.toString(n);
+        } catch (ConstantPoolException e) {
+            argCount = report(e);
+        } catch (DescriptorException e) {
+            argCount = report(e);
+        }
+
+        println("   Stack=" + attr.max_stack +
+                ", Locals=" + attr.max_locals +
+                ", Args_size=" + argCount);
+
+    }
+
+    public void writeInstrs(Code_attribute attr) {
+        try {
+            for (int pc = 0; pc < attr.code_length;) {
+                print("   " + pc + ":\t");
+                pc += writeInstr(attr, pc);
+                println();
+            }
+        } catch (Code_attribute.InvalidIndex e) {
+            println(report(e));
+        }
+    }
+
+    public int writeInstr(Code_attribute attr, int pc)
+            throws Code_attribute.InvalidIndex {
+        String lP = "";
+        int opcode = attr.getUnsignedByte(pc);
+        int opcode2;
+        String mnem;
+        switch (opcode) {
+            case opc_nonpriv:
+            case opc_priv: {
+                opcode2 = attr.getUnsignedByte(pc + 1);
+                mnem = opcName((opcode << 8) + opcode2);
+                if (mnem == null) {
+                    mnem = opcName(opcode) + " " + opcode2;
+                }
+                print(mnem);
+                return 2;
+            }
+            case opc_wide: {
+                opcode2 = attr.getUnsignedByte(pc + 1);
+                mnem = opcName((opcode << 8) + opcode2);
+                if (mnem == null) {
+                    print("bytecode " + opcode);
+                    return 1;
+                }
+                print(mnem + " " + attr.getUnsignedShort(pc + 2));
+                if (opcode2 == opc_iinc) {
+                    print(", " + attr.getShort(pc + 4));
+                    return 6;
+                }
+                return 4;
+            }
+        }
+        mnem = opcName(opcode);
+        if (mnem == null) {
+            print("bytecode " + opcode);
+            return 1;
+        }
+        if (opcode > opc_jsr_w) {
+            print("bytecode " + opcode);
+            return 1;
+        }
+        print(opcName(opcode));
+        switch (opcode) {
+            case opc_aload:
+            case opc_astore:
+            case opc_fload:
+            case opc_fstore:
+            case opc_iload:
+            case opc_istore:
+            case opc_lload:
+            case opc_lstore:
+            case opc_dload:
+            case opc_dstore:
+            case opc_ret:
+                print("\t" + attr.getUnsignedByte(pc + 1));
+                return 2;
+            case opc_iinc:
+                print("\t" + attr.getUnsignedByte(pc + 1) + ", " + attr.getByte(pc + 2));
+                return 3;
+            case opc_tableswitch:
+                {
+                    int tb = align(pc + 1);
+                    int default_skip = attr.getInt(tb);
+                    int low = attr.getInt(tb + 4);
+                    int high = attr.getInt(tb + 8);
+                    int count = high - low;
+                    print("{ //" + low + " to " + high);
+                    for (int i = 0; i <= count; i++) {
+                        print("\n\t\t" + (i + low) + ": " + lP + (pc + attr.getInt(tb + 12 + 4 * i)) + ";");
+                    }
+                    print("\n\t\tdefault: " + lP + (default_skip + pc) + " }");
+                    return tb - pc + 16 + count * 4;
+                }
+            case opc_lookupswitch:
+                {
+                    int tb = align(pc + 1);
+                    int default_skip = attr.getInt(tb);
+                    int npairs = attr.getInt(tb + 4);
+                    print("{ //" + npairs);
+                    for (int i = 1; i <= npairs; i++) {
+                        print("\n\t\t" + attr.getInt(tb + i * 8) + ": " + lP + (pc + attr.getInt(tb + 4 + i * 8)) + ";");
+                    }
+                    print("\n\t\tdefault: " + lP + (default_skip + pc) + " }");
+                    return tb - pc + (npairs + 1) * 8;
+                }
+            case opc_newarray:
+                int type = attr.getUnsignedByte(pc + 1);
+                switch (type) {
+                    case T_BOOLEAN:
+                        print(" boolean");
+                        break;
+                    case T_BYTE:
+                        print(" byte");
+                        break;
+                    case T_CHAR:
+                        print(" char");
+                        break;
+                    case T_SHORT:
+                        print(" short");
+                        break;
+                    case T_INT:
+                        print(" int");
+                        break;
+                    case T_LONG:
+                        print(" long");
+                        break;
+                    case T_FLOAT:
+                        print(" float");
+                        break;
+                    case T_DOUBLE:
+                        print(" double");
+                        break;
+                    case T_CLASS:
+                        print(" class");
+                        break;
+                    default:
+                        print(" BOGUS TYPE:" + type);
+                }
+                return 2;
+            case opc_anewarray:
+                {
+                    int index = attr.getUnsignedShort(pc + 1);
+                    print("\t#" + index + "; //");
+                    printConstant(index);
+                    return 3;
+                }
+            case opc_sipush:
+                print("\t" + attr.getShort(pc + 1));
+                return 3;
+            case opc_bipush:
+                print("\t" + attr.getByte(pc + 1));
+                return 2;
+            case opc_ldc:
+                {
+                    int index = attr.getUnsignedByte(pc + 1);
+                    print("\t#" + index + "; //");
+                    printConstant(index);
+                    return 2;
+                }
+            case opc_ldc_w:
+            case opc_ldc2_w:
+            case opc_instanceof:
+            case opc_checkcast:
+            case opc_new:
+            case opc_putstatic:
+            case opc_getstatic:
+            case opc_putfield:
+            case opc_getfield:
+            case opc_invokevirtual:
+            case opc_invokespecial:
+            case opc_invokestatic:
+                {
+                    int index = attr.getUnsignedShort(pc + 1);
+                    print("\t#" + index + "; //");
+                    printConstant(index);
+                    return 3;
+                }
+            case opc_invokeinterface:
+                {
+                    int index = attr.getUnsignedShort(pc + 1);
+                    int nargs = attr.getUnsignedByte(pc + 3);
+                    print("\t#" + index + ",  " + nargs + "; //");
+                    printConstant(index);
+                    return 5;
+                }
+            case opc_multianewarray:
+                {
+                    int index = attr.getUnsignedShort(pc + 1);
+                    int dimensions = attr.getUnsignedByte(pc + 3);
+                    print("\t#" + index + ",  " + dimensions + "; //");
+                    printConstant(index);
+                    return 4;
+                }
+            case opc_jsr:
+            case opc_goto:
+            case opc_ifeq:
+            case opc_ifge:
+            case opc_ifgt:
+            case opc_ifle:
+            case opc_iflt:
+            case opc_ifne:
+            case opc_if_icmpeq:
+            case opc_if_icmpne:
+            case opc_if_icmpge:
+            case opc_if_icmpgt:
+            case opc_if_icmple:
+            case opc_if_icmplt:
+            case opc_if_acmpeq:
+            case opc_if_acmpne:
+            case opc_ifnull:
+            case opc_ifnonnull:
+                print("\t" + lP + (pc + attr.getShort(pc + 1)));
+                return 3;
+            case opc_jsr_w:
+            case opc_goto_w:
+                print("\t" + lP + (pc + attr.getInt(pc + 1)));
+                return 5;
+            default:
+                return 1;
+        }
+    }
+
+    public void writeExceptionTable(Code_attribute attr) {
+        if (attr.exception_table_langth > 0) {
+            println("  Exception table:");
+            println("   from   to  target type");
+            for (int i = 0; i < attr.exception_table.length; i++) {
+                Code_attribute.Exception_data handler = attr.exception_table[i];
+                printFixedWidthInt(handler.start_pc, 6);
+                printFixedWidthInt(handler.end_pc, 6);
+                printFixedWidthInt(handler.handler_pc, 6);
+                print("   ");
+                int catch_type = handler.catch_type;
+                if (catch_type == 0) {
+                    println("any");
+                } else {
+                    print("Class ");
+                    println(constantWriter.stringValue(catch_type));
+                    println("");
+                }
+            }
+        }
+
+    }
+
+    private void printConstant(int index) {
+        constantWriter.write(index);
+    }
+
+    private void printFixedWidthInt(int n, int width) {
+        String s = String.valueOf(n);
+        for (int i = s.length(); i < width; i++)
+            print(" ");
+        print(s);
+    }
+
+    private static int align(int n) {
+        return (n + 3) & ~3;
+    }
+
+    private AttributeWriter attrWriter;
+    private ClassWriter classWriter;
+    private ConstantWriter constantWriter;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/ConstantWriter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,352 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import com.sun.tools.classfile.ClassFile;
+import com.sun.tools.classfile.ConstantPool;
+import com.sun.tools.classfile.ConstantPoolException;
+
+import static com.sun.tools.classfile.ConstantPool.*;
+
+/*
+ *  Write a constant pool entry.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class ConstantWriter extends BasicWriter {
+    static ConstantWriter instance(Context context) {
+        ConstantWriter instance = context.get(ConstantWriter.class);
+        if (instance == null)
+            instance = new ConstantWriter(context);
+        return instance;
+    }
+
+    protected ConstantWriter(Context context) {
+        super(context);
+        context.put(ConstantWriter.class, this);
+        classWriter = ClassWriter.instance(context);
+        options = Options.instance(context);
+    }
+
+    void writeConstantPool() {
+        ConstantPool.Visitor<Integer, Void> v = new ConstantPool.Visitor<Integer,Void>() {
+            public Integer visitClass(CONSTANT_Class_info info, Void p) {
+                println("#" + info.name_index + ";\t//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitDouble(CONSTANT_Double_info info, Void p) {
+                println(stringValue(info) + ";");
+                return 2;
+            }
+
+            public Integer visitFieldref(CONSTANT_Fieldref_info info, Void p) {
+                println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitFloat(CONSTANT_Float_info info, Void p) {
+                println(stringValue(info) + ";");
+                return 1;
+            }
+
+            public Integer visitInteger(CONSTANT_Integer_info info, Void p) {
+                println(stringValue(info) + ";");
+                return 1;
+            }
+
+            public Integer visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) {
+                println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitLong(CONSTANT_Long_info info, Void p) {
+                println(stringValue(info) + ";");
+                return 2;
+            }
+
+            public Integer visitNameAndType(CONSTANT_NameAndType_info info, Void p) {
+                String tab = (options.compat ? "" : "\t"); // BUG 6622232 javap gets whitespace confused
+                println("#" + info.name_index + ":#" + info.type_index + ";" + tab + "//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitMethodref(CONSTANT_Methodref_info info, Void p) {
+                println("#" + info.class_index + ".#" + info.name_and_type_index + ";\t//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitString(CONSTANT_String_info info, Void p) {
+                println("#" + info.string_index + ";\t//  " + stringValue(info));
+                return 1;
+            }
+
+            public Integer visitUtf8(CONSTANT_Utf8_info info, Void p) {
+                println(stringValue(info) + ";");
+                return 1;
+            }
+
+        };
+        println("  Constant pool:");
+        ConstantPool constant_pool = classWriter.getClassFile().constant_pool;
+        int cpx = 1;
+        while (cpx < constant_pool.size()) {
+            try {
+                CPInfo cpInfo = constant_pool.get(cpx);
+                print("const #" + cpx + " = " + tagName(cpInfo.getTag()) + "\t");
+                cpx += cpInfo.accept(v, null);
+            } catch (ConstantPool.InvalidIndex ex) {
+                print("const #" + cpx); // should not happen
+            }
+        }
+    }
+
+    void write(int cpx) {
+        ClassFile classFile = classWriter.getClassFile();
+        if (cpx == 0) {
+            print("#0");
+            return;
+        }
+
+        CPInfo cpInfo;
+        try {
+            cpInfo = classFile.constant_pool.get(cpx);
+        } catch (ConstantPoolException e) {
+            print("#" + cpx);
+            return;
+        }
+
+        int tag = cpInfo.getTag();
+        switch (tag) {
+            case CONSTANT_Methodref:
+            case CONSTANT_InterfaceMethodref:
+            case CONSTANT_Fieldref:
+                // simplify references within this class
+                CPRefInfo ref = (CPRefInfo) cpInfo;
+                try {
+                    if (ref.class_index == classFile.this_class)
+                         cpInfo = classFile.constant_pool.get(ref.name_and_type_index);
+                } catch (ConstantPool.InvalidIndex e) {
+                    // ignore, for now
+                }
+        }
+        print(tagName(tag) + " " + stringValue(cpInfo));
+    }
+
+    String tagName(int tag) {
+        switch (tag) {
+            case CONSTANT_Utf8:
+                return "Asciz";
+            case CONSTANT_Integer:
+                return "int";
+            case CONSTANT_Float:
+                return "float";
+            case CONSTANT_Long:
+                return "long";
+            case CONSTANT_Double:
+                return "double";
+            case CONSTANT_Class:
+                return "class";
+            case CONSTANT_String:
+                return "String";
+            case CONSTANT_Fieldref:
+                return "Field";
+            case CONSTANT_Methodref:
+                return "Method";
+            case CONSTANT_InterfaceMethodref:
+                return "InterfaceMethod";
+            case CONSTANT_NameAndType:
+                return "NameAndType";
+            default:
+                return "unknown tag";
+        }
+    }
+
+    String stringValue(int constant_pool_index) {
+        ClassFile classFile = classWriter.getClassFile();
+        try {
+            return stringValue(classFile.constant_pool.get(constant_pool_index));
+        } catch (ConstantPool.InvalidIndex e) {
+            return report(e);
+        }
+    }
+
+    String stringValue(CPInfo cpInfo) {
+        return stringValueVisitor.visit(cpInfo);
+    }
+
+    StringValueVisitor stringValueVisitor = new StringValueVisitor();
+
+    private class StringValueVisitor implements ConstantPool.Visitor<String, Void> {
+        public String visit(CPInfo info) {
+            return info.accept(this, null);
+        }
+
+        public String visitClass(CONSTANT_Class_info info, Void p) {
+            return getCheckedName(info);
+        }
+
+        String getCheckedName(CONSTANT_Class_info info) {
+            try {
+                return checkName(info.getName());
+            } catch (ConstantPoolException e) {
+                return report(e);
+            }
+        }
+
+        public String visitDouble(CONSTANT_Double_info info, Void p) {
+            return info.value + "d";
+        }
+
+        public String visitFieldref(CONSTANT_Fieldref_info info, Void p) {
+            return visitRef(info, p);
+        }
+
+        public String visitFloat(CONSTANT_Float_info info, Void p) {
+            return info.value + "f";
+        }
+
+        public String visitInteger(CONSTANT_Integer_info info, Void p) {
+            return String.valueOf(info.value);
+        }
+
+        public String visitInterfaceMethodref(CONSTANT_InterfaceMethodref_info info, Void p) {
+            return visitRef(info, p);
+        }
+
+        public String visitLong(CONSTANT_Long_info info, Void p) {
+            return info.value + "l";
+        }
+
+        public String visitNameAndType(CONSTANT_NameAndType_info info, Void p) {
+            return getCheckedName(info) + ":" + getType(info);
+        }
+
+        String getCheckedName(CONSTANT_NameAndType_info info) {
+            try {
+                return checkName(info.getName());
+            } catch (ConstantPoolException e) {
+                return report(e);
+            }
+        }
+
+        String getType(CONSTANT_NameAndType_info info) {
+            try {
+                return info.getType();
+            } catch (ConstantPoolException e) {
+                return report(e);
+            }
+        }
+
+        public String visitMethodref(CONSTANT_Methodref_info info, Void p) {
+            return visitRef(info, p);
+        }
+
+        public String visitString(CONSTANT_String_info info, Void p) {
+            try {
+                ClassFile classFile = classWriter.getClassFile();
+                int string_index = info.string_index;
+                return stringValue(classFile.constant_pool.getUTF8Info(string_index));
+            } catch (ConstantPoolException e) {
+                return report(e);
+            }
+        }
+
+        public String visitUtf8(CONSTANT_Utf8_info info, Void p) {
+            String s = info.value;
+            StringBuilder sb = new StringBuilder();
+            for (int i = 0; i < s.length(); i++) {
+                char c = s.charAt(i);
+                switch (c) {
+                    case '\t':
+                        sb.append('\\').append('t');
+                        break;
+                    case '\n':
+                        sb.append('\\').append('n');
+                        break;
+                    case '\r':
+                        sb.append('\\').append('r');
+                        break;
+                    case '\"':
+                        sb.append('\\').append('\"');
+                        break;
+                    default:
+                        sb.append(c);
+                }
+            }
+            return sb.toString();
+        }
+
+        String visitRef(CPRefInfo info, Void p) {
+            String cn = getCheckedClassName(info);
+            String nat;
+            try {
+                nat = stringValue(info.getNameAndTypeInfo());
+            } catch (ConstantPoolException e) {
+                nat = report(e);
+            }
+            return cn + "." + nat;
+        }
+
+        String getCheckedClassName(CPRefInfo info) {
+            try {
+                return checkName(info.getClassName());
+            } catch (ConstantPoolException e) {
+                return report(e);
+            }
+        }
+    }
+
+
+    /* If name is a valid binary name, return it; otherwise quote it. */
+    private static String checkName(String name) {
+        if (name == null)
+            return "null";
+
+        int len = name.length();
+        if (len == 0)
+            return "\"\"";
+
+        int cc = '/';
+        int cp;
+        for (int k = 0; k < len; k += Character.charCount(cp)) {
+            cp = name.codePointAt(k);
+            if ((cc == '/' && !Character.isJavaIdentifierStart(cp))
+                    || (cp != '/' && !Character.isJavaIdentifierPart(cp))) {
+                return "\"" + name + "\"";
+            }
+            cc = cp;
+        }
+
+        return name;
+    }
+
+    private ClassWriter classWriter;
+    private Options options;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/Context.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,55 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/*
+ *  Class from which to put/get shared resources.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Context {
+    public Context() {
+       map = new HashMap<Class<?>, Object>();
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T> T get(Class<T> key) {
+        return (T) map.get(key);
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T> T put(Class<T> key, T value) {
+        return (T) map.put(key, value);
+    }
+
+    Map<Class<?>, Object> map;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/DisassemblerTool.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,150 @@
+/*
+ * 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.  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.tools.javap; //javax.tools;
+
+import java.io.Writer;
+import java.nio.charset.Charset;
+import java.util.Locale;
+import java.util.concurrent.Callable;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.OptionChecker;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.Tool;
+
+/**
+ * This class is intended to be put in javax.tools.
+ *
+ * @see DiagnosticListener
+ * @see Diagnostic
+ * @see JavaFileManager
+ * @since 1.6
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public interface DisassemblerTool extends Tool, OptionChecker {
+
+    /**
+     * Creates a future for a disassembly task with the given
+     * components and arguments.  The task might not have
+     * completed as described in the DissemblerTask interface.
+     *
+     * <p>If a file manager is provided, it must be able to handle all
+     * locations defined in {@link StandardLocation}.
+     *
+     * @param out a Writer for additional output from the compiler;
+     * use {@code System.err} if {@code null}
+     * @param fileManager a file manager; if {@code null} use the
+     * compiler's standard filemanager
+     * @param diagnosticListener a diagnostic listener; if {@code
+     * null} use the compiler's default method for reporting
+     * diagnostics
+     * @param options compiler options, {@code null} means no options
+     * @param classes class names (for annotation processing), {@code
+     * null} means no class names
+     * @param compilationUnits the compilation units to compile, {@code
+     * null} means no compilation units
+     * @return an object representing the compilation
+     * @throws RuntimeException if an unrecoverable error
+     * occurred in a user supplied component.  The
+     * {@linkplain Throwable#getCause() cause} will be the error in
+     * user code.
+     * @throws IllegalArgumentException if any of the given
+     * compilation units are of other kind than
+     * {@linkplain JavaFileObject.Kind#SOURCE source}
+     */
+    DisassemblerTask getTask(Writer out,
+                            JavaFileManager fileManager,
+                            DiagnosticListener<? super JavaFileObject> diagnosticListener,
+                            Iterable<String> options,
+                            Iterable<String> classes);
+
+    /**
+     * Gets a new instance of the standard file manager implementation
+     * for this tool.  The file manager will use the given diagnostic
+     * listener for producing any non-fatal diagnostics.  Fatal errors
+     * will be signalled with the appropriate exceptions.
+     *
+     * <p>The standard file manager will be automatically reopened if
+     * it is accessed after calls to {@code flush} or {@code close}.
+     * The standard file manager must be usable with other tools.
+     *
+     * @param diagnosticListener a diagnostic listener for non-fatal
+     * diagnostics; if {@code null} use the compiler's default method
+     * for reporting diagnostics
+     * @param locale the locale to apply when formatting diagnostics;
+     * {@code null} means the {@linkplain Locale#getDefault() default locale}.
+     * @param charset the character set used for decoding bytes; if
+     * {@code null} use the platform default
+     * @return the standard file manager
+     */
+    StandardJavaFileManager getStandardFileManager(
+        DiagnosticListener<? super JavaFileObject> diagnosticListener,
+        Locale locale,
+        Charset charset);
+
+    /**
+     * Interface representing a future for a disassembly task.  The
+     * task has not yet started.  To start the task, call
+     * the {@linkplain #call call} method.
+     *
+     * <p>Before calling the call method, additional aspects of the
+     * task can be configured, for example, by calling the
+     * {@linkplain #setLocale setLocale} method.
+     */
+    interface DisassemblerTask extends Callable<Boolean> {
+
+        /**
+         * Set the locale to be applied when formatting diagnostics and
+         * other localized data.
+         *
+         * @param locale the locale to apply; {@code null} means apply no
+         * locale
+         * @throws IllegalStateException if the task has started
+         */
+        void setLocale(Locale locale);
+
+        /**
+         * Performs this compilation task.  The compilation may only
+         * be performed once.  Subsequent calls to this method throw
+         * IllegalStateException.
+         *
+         * @return true if and only all the files compiled without errors;
+         * false otherwise
+         *
+         * @throws RuntimeException if an unrecoverable error occurred
+         * in a user-supplied component.  The
+         * {@linkplain Throwable#getCause() cause} will be the error
+         * in user code.
+         * @throws IllegalStateException if called more than once
+         */
+        Boolean call();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/InternalError.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,46 @@
+/*
+ * 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 com.sun.tools.javap;
+
+/**
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class InternalError extends Error {
+    InternalError(Throwable t, Object... args) {
+        super("Internal error", t);
+        this.args = args;
+    }
+
+    InternalError(Object... args) {
+        super("Internal error");
+        this.args = args;
+    }
+
+    public final Object[] args;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/JavapFileManager.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,86 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.nio.charset.Charset;
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaFileObject;
+
+import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.util.Context;
+import com.sun.tools.javac.util.JCDiagnostic;
+
+/**
+ *  javap's implementation of JavaFileManager.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+class JavapFileManager extends JavacFileManager {
+    private JavapFileManager(Context context, Charset charset) {
+        super(context, true, charset);
+    }
+
+    static JavapFileManager create(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log, Options options) {
+        Context javac_context = new Context();
+
+        if (dl != null) {
+            // Workaround bug 6625520: javac handles missing entries on classpath badly
+            // Ignore spurious errors for missing files
+            DiagnosticListener<JavaFileObject> wrapper = new DiagnosticListener<JavaFileObject>() {
+                public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                    if (diagnostic instanceof JCDiagnostic) {
+                        JCDiagnostic jcd = (JCDiagnostic) diagnostic;
+                        if (jcd.getCode().equals("compiler.err.error.reading.file")) {
+                            Object[] args = jcd.getArgs();
+                            if (args.length > 0 && args[0] != null && args[0].toString().length() > 0) {
+                                File f = new File(args[0].toString());
+                                if (!f.exists())
+                                    return;
+                            }
+                        }
+
+                    }
+                    dl.report(diagnostic);
+                }
+            };
+            javac_context.put(DiagnosticListener.class, wrapper);
+        }
+
+        javac_context.put(com.sun.tools.javac.util.Log.outKey, log);
+
+        return new JavapFileManager(javac_context, null);
+    }
+
+    void setIgnoreSymbolFile(boolean b) {
+        ignoreSymbolFile = b;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,625 @@
+/*
+ * 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-15301 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.tools.javap;
+
+import java.io.EOFException;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticListener;
+import javax.tools.JavaFileManager;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.StandardLocation;
+
+import com.sun.tools.classfile.*;
+
+/**
+ *  "Main" class for javap, normally accessed from the command line
+ *  via Main, or from JSR199 via DisassemblerTool.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class JavapTask implements DisassemblerTool.DisassemblerTask {
+    public class BadArgs extends Exception {
+        static final long serialVersionUID = 8765093759964640721L;
+        BadArgs(String key, Object... args) {
+            super(JavapTask.this.getMessage(key, args));
+            this.key = key;
+            this.args = args;
+        }
+
+        BadArgs showUsage(boolean b) {
+            showUsage = b;
+            return this;
+        }
+
+        final String key;
+        final Object[] args;
+        boolean showUsage;
+    }
+
+    static abstract class Option {
+        Option(boolean hasArg, String... aliases) {
+            this.hasArg = hasArg;
+            this.aliases = aliases;
+        }
+
+        boolean matches(String opt) {
+            for (String a: aliases) {
+                if (a.equals(opt))
+                    return true;
+            }
+            return false;
+        }
+
+        boolean ignoreRest() {
+            return false;
+        }
+
+        abstract void process(JavapTask task, String opt, String arg) throws BadArgs;
+
+        final boolean hasArg;
+        final String[] aliases;
+    }
+
+    static Option[] recognizedOptions = {
+
+        new Option(false, "-help", "--help", "-?") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.help = true;
+            }
+        },
+
+        new Option(false, "-version") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.version = true;
+            }
+        },
+
+        new Option(false, "-fullversion") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.fullVersion = true;
+            }
+        },
+
+        new Option(false, "-v", "-verbose", "-all") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.verbose = true;
+                task.options.showFlags = true;
+                task.options.showAllAttrs = true;
+            }
+        },
+
+        new Option(false, "-l") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showLineAndLocalVariableTables = true;
+            }
+        },
+
+        new Option(false, "-public") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showAccess = AccessFlags.ACC_PUBLIC;
+            }
+        },
+
+        new Option(false, "-protected") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showAccess = AccessFlags.ACC_PROTECTED;
+            }
+        },
+
+        new Option(false, "-package") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showAccess = 0;
+            }
+        },
+
+        new Option(false, "-p", "-private") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showAccess = AccessFlags.ACC_PRIVATE;
+            }
+        },
+
+        new Option(false, "-c") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showDisassembled = true;
+            }
+        },
+
+        new Option(false, "-s") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.showInternalSignatures = true;
+            }
+        },
+
+//        new Option(false, "-all") {
+//            void process(JavapTask task, String opt, String arg) {
+//                task.options.showAllAttrs = true;
+//            }
+//        },
+
+        new Option(false, "-h") {
+            void process(JavapTask task, String opt, String arg) throws BadArgs {
+                throw task.new BadArgs("err.h.not.supported");
+            }
+        },
+
+        new Option(false, "-verify", "-verify-verbose") {
+            void process(JavapTask task, String opt, String arg) throws BadArgs {
+                throw task.new BadArgs("err.verify.not.supported");
+            }
+        },
+
+        new Option(false, "-Xold") {
+            void process(JavapTask task, String opt, String arg) throws BadArgs {
+                // -Xold is only supported as first arg when invoked from
+                // command line; this is handled in Main,main
+                throw task.new BadArgs("err.Xold.not.supported.here");
+            }
+        },
+
+        new Option(false, "-Xnew") {
+            void process(JavapTask task, String opt, String arg) throws BadArgs {
+                // ignore: this _is_ the new version
+            }
+        },
+
+        new Option(false, "-XDcompat") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.compat = true;
+            }
+        },
+
+        new Option(false, "-XDjsr277") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.jsr277 = true;
+            }
+        },
+
+        new Option(false, "-XDignore.symbol.file") {
+            void process(JavapTask task, String opt, String arg) {
+                task.options.ignoreSymbolFile = true;
+            }
+        }
+
+    };
+
+    JavapTask() {
+        context = new Context();
+        options = Options.instance(context);
+    }
+
+    JavapTask(Writer out,
+            JavaFileManager fileManager,
+            DiagnosticListener<? super JavaFileObject> diagnosticListener,
+            Iterable<String> options,
+            Iterable<String> classes) {
+        this();
+        this.log = getPrintWriterForWriter(out);
+        this.fileManager = fileManager;
+        this.diagnosticListener = diagnosticListener;
+
+        try {
+            handleOptions(options, false);
+        } catch (BadArgs e) {
+            throw new IllegalArgumentException(e.getMessage());
+        }
+
+        this.classes = new ArrayList<String>();
+        for (String classname: classes) {
+            classname.getClass(); // null-check
+            this.classes.add(classname);
+        }
+    }
+
+    public void setLocale(Locale locale) {
+        if (locale == null)
+            locale = Locale.getDefault();
+        task_locale = locale;
+    }
+
+    public void setLog(PrintWriter log) {
+        this.log = log;
+    }
+
+    public void setLog(OutputStream s) {
+        setLog(getPrintWriterForStream(s));
+    }
+
+    private static PrintWriter getPrintWriterForStream(OutputStream s) {
+        return new PrintWriter(s, true);
+    }
+
+    private static PrintWriter getPrintWriterForWriter(Writer w) {
+        if (w == null)
+            return getPrintWriterForStream(null);
+        else if (w instanceof PrintWriter)
+            return (PrintWriter) w;
+        else
+            return new PrintWriter(w, true);
+    }
+
+    public void setDiagnosticListener(DiagnosticListener<? super JavaFileObject> dl) {
+        diagnosticListener = dl;
+    }
+
+    public void setDiagnosticListener(OutputStream s) {
+        setDiagnosticListener(getDiagnosticListenerForStream(s));
+    }
+
+    private DiagnosticListener<JavaFileObject> getDiagnosticListenerForStream(OutputStream s) {
+        return getDiagnosticListenerForWriter(getPrintWriterForStream(s));
+    }
+
+    private DiagnosticListener<JavaFileObject> getDiagnosticListenerForWriter(Writer w) {
+        final PrintWriter pw = getPrintWriterForWriter(w);
+        return new DiagnosticListener<JavaFileObject> () {
+            public void report(Diagnostic<? extends JavaFileObject> diagnostic) {
+                if (diagnostic.getKind() == Diagnostic.Kind.ERROR) {
+                    pw.print(getMessage("err.prefix"));
+                    pw.print(" ");
+                }
+                pw.println(diagnostic.getMessage(null));
+            }
+        };
+    }
+
+    int run(String[] args) {
+        try {
+            handleOptions(args);
+            boolean ok = run();
+            return ok ? 0 : 1;
+        } catch (BadArgs e) {
+            diagnosticListener.report(createDiagnostic(e.key, e.args));
+            return 1;
+        } catch (InternalError e) {
+            Object[] e_args;
+            if (e.getCause() == null)
+                e_args = e.args;
+            else {
+                e_args = new Object[e.args.length + 1];
+                e_args[0] = e.getCause();
+                System.arraycopy(e.args, 0, e_args, 1, e.args.length);
+            }
+            diagnosticListener.report(createDiagnostic("err.internal.error", e_args));
+            return 1;
+        } finally {
+            log.flush();
+        }
+    }
+
+    public void handleOptions(String[] args) throws BadArgs {
+        handleOptions(Arrays.asList(args), true);
+    }
+
+    private void handleOptions(Iterable<String> args, boolean allowClasses) throws BadArgs {
+        if (log == null) {
+            log = getPrintWriterForStream(System.out);
+            if (diagnosticListener == null)
+              diagnosticListener = getDiagnosticListenerForStream(System.err);
+        } else {
+            if (diagnosticListener == null)
+              diagnosticListener = getDiagnosticListenerForWriter(log);
+        }
+
+
+        if (fileManager == null)
+            fileManager = getDefaultFileManager(diagnosticListener, log);
+
+        Iterator<String> iter = args.iterator();
+        if (!iter.hasNext())
+            options.help = true;
+
+        while (iter.hasNext()) {
+            String arg = iter.next();
+            if (arg.startsWith("-"))
+                handleOption(arg, iter);
+            else if (allowClasses) {
+                if (classes == null)
+                    classes = new ArrayList<String>();
+                classes.add(arg);
+                while (iter.hasNext())
+                    classes.add(iter.next());
+            } else
+                throw new BadArgs("err.unknown.option", arg).showUsage(true);
+        }
+
+        if (options.ignoreSymbolFile && fileManager instanceof JavapFileManager)
+            ((JavapFileManager) fileManager).setIgnoreSymbolFile(true);
+
+        if ((classes == null || classes.size() == 0) &&
+                !(options.help || options.version || options.fullVersion)) {
+            throw new BadArgs("err.no.classes.specified");
+        }
+    }
+
+    private void handleOption(String name, Iterator<String> rest) throws BadArgs {
+        for (Option o: recognizedOptions) {
+            if (o.matches(name)) {
+                if (o.hasArg) {
+                    if (rest.hasNext())
+                        o.process(this, name, rest.next());
+                    else
+                        throw new BadArgs("err.missing.arg", name).showUsage(true);
+                } else
+                    o.process(this, name, null);
+
+                if (o.ignoreRest()) {
+                    while (rest.hasNext())
+                        rest.next();
+                }
+                return;
+            }
+        }
+
+        if (fileManager.handleOption(name, rest))
+            return;
+
+        throw new BadArgs("err.unknown.option", name).showUsage(true);
+    }
+
+    public Boolean call() {
+        return run();
+    }
+
+    public boolean run() {
+        if (options.help)
+            showHelp();
+
+        if (options.version || options.fullVersion)
+            showVersion(options.fullVersion);
+
+        if (classes == null || classes.size() == 0)
+            return true;
+
+        context.put(PrintWriter.class, log);
+        ClassWriter classWriter = ClassWriter.instance(context);
+
+        boolean ok = true;
+
+        for (String className: classes) {
+            JavaFileObject fo;
+            try {
+                if (className.endsWith(".class")) {
+                    if (fileManager instanceof StandardJavaFileManager) {
+                        StandardJavaFileManager sfm = (StandardJavaFileManager) fileManager;
+                        fo = sfm.getJavaFileObjects(className).iterator().next();
+                    } else {
+                       diagnosticListener.report(createDiagnostic("err.not.standard.file.manager", className));
+                       ok = false;
+                       continue;
+                    }
+                } else {
+                    fo = getClassFileObject(className);
+                    if (fo == null) {
+                        // see if it is an inner class, by replacing dots to $, starting from the right
+                        String cn = className;
+                        int lastDot;
+                        while (fo == null && (lastDot = cn.lastIndexOf(".")) != -1) {
+                            cn = cn.substring(0, lastDot) + "$" + cn.substring(lastDot + 1);
+                            fo = getClassFileObject(cn);
+                        }
+                    }
+                    if (fo == null) {
+                       diagnosticListener.report(createDiagnostic("err.class.not.found", className));
+                       ok = false;
+                       continue;
+                    }
+                }
+                Attribute.Factory attributeFactory = new Attribute.Factory();
+                attributeFactory.setCompat(options.compat);
+                attributeFactory.setJSR277(options.jsr277);
+                ClassFile cf = ClassFile.read(fo.openInputStream(), attributeFactory);
+                classWriter.write(cf);
+            } catch (ConstantPoolException e) {
+                diagnosticListener.report(createDiagnostic("err.bad.constant.pool", className, e.getLocalizedMessage()));
+                ok = false;
+            } catch (EOFException e) {
+                diagnosticListener.report(createDiagnostic("err.end.of.file", className));
+                ok = false;
+            } catch (FileNotFoundException e) {
+                diagnosticListener.report(createDiagnostic("err.file.not.found", e.getLocalizedMessage()));
+                ok = false;
+            } catch (IOException e) {
+                //e.printStackTrace();
+                Object msg = e.getLocalizedMessage();
+                if (msg == null)
+                    msg = e;
+                diagnosticListener.report(createDiagnostic("err.ioerror", className, msg));
+                ok = false;
+            } catch (Throwable t) {
+                StringWriter sw = new StringWriter();
+                PrintWriter pw = new PrintWriter(sw);
+                t.printStackTrace(pw);
+                pw.close();
+                diagnosticListener.report(createDiagnostic("err.crash", t.toString(), sw.toString()));
+                ok = false;
+            }
+        }
+
+        return ok;
+    }
+
+    private JavaFileManager getDefaultFileManager(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) {
+        return JavapFileManager.create(dl, log, options);
+    }
+
+    private JavaFileObject getClassFileObject(String className) throws IOException {
+        JavaFileObject fo;
+        fo = fileManager.getJavaFileForInput(StandardLocation.PLATFORM_CLASS_PATH, className, JavaFileObject.Kind.CLASS);
+        if (fo == null)
+            fo = fileManager.getJavaFileForInput(StandardLocation.CLASS_PATH, className, JavaFileObject.Kind.CLASS);
+        return fo;
+    }
+
+    private void showHelp() {
+        log.println(getMessage("main.usage", progname));
+        for (Option o: recognizedOptions) {
+            String name = o.aliases[0].substring(1); // there must always be at least one name
+            if (name.startsWith("X") || name.equals("fullversion") || name.equals("h") || name.equals("verify"))
+                continue;
+            log.println(getMessage("main.opt." + name));
+        }
+        String[] fmOptions = { "-classpath", "-bootclasspath" };
+        for (String o: fmOptions) {
+            if (fileManager.isSupportedOption(o) == -1)
+                continue;
+            String name = o.substring(1);
+            log.println(getMessage("main.opt." + name));
+        }
+
+    }
+
+    private void showVersion(boolean full) {
+        log.println(version(full ? "full" : "release"));
+    }
+
+    private static final String versionRBName = "com.sun.tools.javap.resources.version";
+    private static ResourceBundle versionRB;
+
+    private String version(String key) {
+        // key=version:  mm.nn.oo[-milestone]
+        // key=full:     mm.mm.oo[-milestone]-build
+        if (versionRB == null) {
+            try {
+                versionRB = ResourceBundle.getBundle(versionRBName);
+            } catch (MissingResourceException e) {
+                return getMessage("version.resource.missing", System.getProperty("java.version"));
+            }
+        }
+        try {
+            return versionRB.getString(key);
+        }
+        catch (MissingResourceException e) {
+            return getMessage("version.unknown", System.getProperty("java.version"));
+        }
+    }
+
+    private Diagnostic<JavaFileObject> createDiagnostic(final String key, final Object... args) {
+        return new Diagnostic<JavaFileObject>() {
+            public Kind getKind() {
+                return Diagnostic.Kind.ERROR;
+            }
+
+            public JavaFileObject getSource() {
+                return null;
+            }
+
+            public long getPosition() {
+                return Diagnostic.NOPOS;
+            }
+
+            public long getStartPosition() {
+                return Diagnostic.NOPOS;
+            }
+
+            public long getEndPosition() {
+                return Diagnostic.NOPOS;
+            }
+
+            public long getLineNumber() {
+                return Diagnostic.NOPOS;
+            }
+
+            public long getColumnNumber() {
+                return Diagnostic.NOPOS;
+            }
+
+            public String getCode() {
+                return key;
+            }
+
+            public String getMessage(Locale locale) {
+                return JavapTask.this.getMessage(locale, key, args);
+            }
+
+        };
+
+    }
+
+    private String getMessage(String key, Object... args) {
+        return getMessage(task_locale, key, args);
+    }
+
+    private String getMessage(Locale locale, String key, Object... args) {
+        if (bundles == null) {
+            // could make this a HashMap<Locale,SoftReference<ResourceBundle>>
+            // and for efficiency, keep a hard reference to the bundle for the task
+            // locale
+            bundles = new HashMap<Locale, ResourceBundle>();
+        }
+
+        if (locale == null)
+            locale = Locale.getDefault();
+
+        ResourceBundle b = bundles.get(locale);
+        if (b == null) {
+            try {
+                b = ResourceBundle.getBundle("com.sun.tools.javap.resources.javap", locale);
+                bundles.put(locale, b);
+            } catch (MissingResourceException e) {
+                throw new InternalError("Cannot find javap resource bundle for locale " + locale);
+            }
+        }
+
+        try {
+            return MessageFormat.format(b.getString(key), args);
+        } catch (MissingResourceException e) {
+            throw new InternalError(e, key);
+        }
+    }
+
+    Context context;
+    JavaFileManager fileManager;
+    PrintWriter log;
+    DiagnosticListener<? super JavaFileObject> diagnosticListener;
+    List<String> classes;
+    Options options;
+    //ResourceBundle bundle;
+    Locale task_locale;
+    Map<Locale, ResourceBundle> bundles;
+
+    private static final String progname = "javap";
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,68 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import java.io.PrintWriter;
+
+/**
+ *  Main entry point.
+ *
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Main {
+    /**
+     * Main entry point for the launcher.
+     * Note: This method calls System.exit.
+     * @param args command line arguments
+     */
+    public static void main(String[] args) {
+        if (args.length >= 1 && args[0].equals("-Xold")) {
+            String[] nArgs = new String[args.length - 1];
+            System.arraycopy(args, 1, nArgs, 0, nArgs.length);
+            sun.tools.javap.Main.main(args);  // calls System.exit
+            System.exit(1);
+        }
+
+        JavapTask t = new JavapTask();
+        int rc = t.run(args);
+        System.exit(rc);
+    }
+
+    /**
+     * Entry point that does <i>not</i> call System.exit.
+     * @param args command line arguments
+     * @param out output stream
+     * @return an exit code. 0 means success, non-zero means an error occurred.
+     */
+    public static int run(String[] args, PrintWriter out) {
+        JavapTask t = new JavapTask();
+        t.setLog(out);
+        return t.run(args);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/Options.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,84 @@
+/*
+ * 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 com.sun.tools.javap;
+
+import com.sun.tools.classfile.AccessFlags;
+
+/*
+ *  Provides access to javap's options, set via the command line
+ *  or JSR 199 API.
+ *  <p><b>This is NOT part of any API supported by Sun Microsystems.  If
+ *  you write code that depends on this, you do so at your own risk.
+ *  This code and its internal interfaces are subject to change or
+ *  deletion without notice.</b>
+ */
+public class Options {
+    public static Options instance(Context context) {
+        Options instance = context.get(Options.class);
+        if (instance == null)
+            instance = new Options(context);
+        return instance;
+    }
+
+    protected Options(Context context) {
+        context.put(Options.class, this);
+    }
+
+    /**
+     * Checks access of class, field or method.
+     */
+    public boolean checkAccess(AccessFlags flags){
+
+        boolean isPublic = flags.is(AccessFlags.ACC_PUBLIC);
+        boolean isProtected = flags.is(AccessFlags.ACC_PROTECTED);
+        boolean isPrivate = flags.is(AccessFlags.ACC_PRIVATE);
+        boolean isPackage = !(isPublic || isProtected || isPrivate);
+
+        if ((showAccess == AccessFlags.ACC_PUBLIC) && (isProtected || isPrivate || isPackage))
+            return false;
+        else if ((showAccess == AccessFlags.ACC_PROTECTED) && (isPrivate || isPackage))
+            return false;
+        else if ((showAccess == 0) && (isPrivate))
+            return false;
+        else
+            return true;
+    }
+
+    public boolean help;
+    public boolean verbose;
+    public boolean version;
+    public boolean fullVersion;
+    public boolean showFlags;
+    public boolean showLineAndLocalVariableTables;
+    public int showAccess;
+    public boolean showDisassembled;
+    public boolean showInternalSignatures;
+    public boolean showAllAttrs;
+
+    public boolean compat;             // bug-for-bug compatibility mode with old javap
+    public boolean jsr277;
+    public boolean ignoreSymbolFile;   // file manager should ignore ct.sym
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/overview.html	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>javap: class file disassembler</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head>
+  <body>
+  Javap is a class file disassembler.
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/package.html	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title></title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  </head>
+  <body>
+  Classes to dump class files in text format.
+  </body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/resources/javap.properties	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,62 @@
+
+err.prefix=Error: 
+
+err.bad.constant.pool=error while reading constant pool for {0}: {1}
+err.class.not.found=class not found: {0}
+err.crash=A serious internal error has occurred: {0}\nPlease file a bug report, and include the following information:\n{1}
+err.end.of.file=unexpected end of file while reading {0}
+err.file.not.found=file not found: {0}
+err.h.not.supported=-h is no longer available - use the 'javah' program
+err.internal.error=internal error: {0} {1} {2}
+err.ioerror=IO error reading {0}: {1}
+err.missing.arg=no value given for {0}
+err.no.classes.specified=no classes specified
+err.not.standard.file.manager=can only specify class files when using a standard file manager
+err.unknown.option=unknown option: {0}
+err.verify.not.supported=-verify not supported
+err.Xold.not.supported.here=-Xold must be given as the first option
+
+main.usage=\
+Usage: {0} <options> <classes>\n\
+where possible options include:
+
+
+main.opt.help=\
+\  -help  --help  -?        Print this usage message
+
+main.opt.version=\
+\  -version                 Version information
+
+main.opt.v=\
+\  -v  -verbose             Print additional information
+
+main.opt.l=\
+\  -l                       Print line number and local variable tables
+
+main.opt.public=\
+\  -public                  Show only public classes and members
+
+main.opt.protected=\
+\  -protected               Show protected/public classes and members
+
+main.opt.package=\
+\  -package                 Show package/protected/public classes\n\
+\                           and members (default)
+
+main.opt.p=\
+\  -p  -private             Show all classes and members
+
+main.opt.c=\
+\  -c                       Disassemble the code
+
+main.opt.s=\
+\  -s                       Print internal type signatures
+
+main.opt.classpath=\
+\  -classpath <path>        Specify where to find user class files
+
+main.opt.bootclasspath=\
+\  -bootclasspath <path>    Override location of bootstrap class files
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/javap/resources/version.properties-template	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,28 @@
+#
+# 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.
+#
+
+jdk=$(JDK_VERSION)
+full=$(FULL_VERSION)
+release=$(RELEASE)
--- a/langtools/src/share/classes/sun/tools/javap/ClassData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/ClassData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/sun/tools/javap/FieldData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/FieldData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/langtools/src/share/classes/sun/tools/javap/InnerClassData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/InnerClassData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2002 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/langtools/src/share/classes/sun/tools/javap/JavapPrinter.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/JavapPrinter.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/sun/tools/javap/Main.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/Main.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -49,6 +49,12 @@
     }
 
     public static void main(String argv[]) {
+        // unless first arg is -Xold, use new javap
+        if (!(argv.length >= 1 && argv[0].equals("-Xold"))) {
+            com.sun.tools.javap.Main.main(argv);
+            return;
+        }
+
         entry(argv);
         if (errorOccurred) {
             System.exit(1);
@@ -178,6 +184,8 @@
                     }
                 } else if (arg.equals("-all")) {
                     env.showallAttr = true;
+                } else if (arg.equals("-Xold")) {
+                    // ignore: this is old javap
                 } else {
                     error("invalid flag: " + arg);
                     usage();
--- a/langtools/src/share/classes/sun/tools/javap/MethodData.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/MethodData.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/sun/tools/javap/Tables.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/Tables.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/src/share/classes/sun/tools/javap/TypeSignature.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/src/share/classes/sun/tools/javap/TypeSignature.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/6304921/TestLog.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/6304921/TestLog.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -32,12 +32,12 @@
 import java.net.URI;
 import javax.tools.JavaFileObject;
 import javax.tools.SimpleJavaFileObject;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.parser.Parser;
 import com.sun.tools.javac.parser.Scanner;
 import com.sun.tools.javac.tree.JCTree;
 import com.sun.tools.javac.tree.TreeScanner;
 import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JavacFileManager;
 import com.sun.tools.javac.util.Log;
 import com.sun.tools.javac.util.JCDiagnostic;
 import com.sun.tools.javac.util.Options;
--- a/langtools/test/tools/javac/6341866/T6341866.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/6341866/T6341866.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/6589361/T6589361.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/6589361/T6589361.java	Mon Jul 07 09:11:55 2008 -0700
@@ -4,8 +4,8 @@
  * @summary 6589361:Failing building ct.sym file as part of the control build
  */
 
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.util.Context;
-import com.sun.tools.javac.util.JavacFileManager;
 import java.io.File;
 import javax.tools.FileObject;
 import javax.tools.JavaFileObject;
--- a/langtools/test/tools/javac/T6358024.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/T6358024.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -35,6 +35,7 @@
 import javax.tools.*;
 import com.sun.source.util.*;
 import com.sun.tools.javac.api.*;
+import com.sun.tools.javac.file.*;
 import com.sun.tools.javac.main.*;
 import com.sun.tools.javac.util.*;
 
--- a/langtools/test/tools/javac/T6358166.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/T6358166.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -32,6 +32,7 @@
 import javax.annotation.processing.*;
 import javax.lang.model.element.*;
 import javax.tools.*;
+import com.sun.tools.javac.file.*;
 import com.sun.tools.javac.main.JavaCompiler;
 import com.sun.tools.javac.main.*;
 import com.sun.tools.javac.util.*;
--- a/langtools/test/tools/javac/T6358168.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/T6358168.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -33,6 +33,7 @@
 import javax.annotation.processing.*;
 import javax.lang.model.element.*;
 import javax.tools.*;
+import com.sun.tools.javac.file.*;
 import com.sun.tools.javac.main.JavaCompiler;
 import com.sun.tools.javac.main.*;
 import com.sun.tools.javac.util.*;
--- a/langtools/test/tools/javac/T6705935.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/T6705935.java	Mon Jul 07 09:11:55 2008 -0700
@@ -30,7 +30,7 @@
 import java.io.*;
 import java.util.*;
 import javax.tools.*;
-import com.sun.tools.javac.util.*;
+import com.sun.tools.javac.file.*;
 
 public class T6705935 {
     public static void main(String... args) throws Exception {
--- a/langtools/test/tools/javac/api/6431257/T6431257.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/api/6431257/T6431257.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/api/T6358786.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/api/T6358786.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -30,7 +30,7 @@
  */
 
 import com.sun.tools.javac.api.JavacTaskImpl;
-import com.sun.tools.javac.util.JavacFileManager;
+import com.sun.tools.javac.file.JavacFileManager;
 import java.util.Arrays;
 
 import javax.lang.model.util.Elements;
--- a/langtools/test/tools/javac/api/TestResolveIdent.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/api/TestResolveIdent.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -30,8 +30,8 @@
  */
 
 import com.sun.tools.javac.api.JavacTaskImpl;
+import com.sun.tools.javac.file.JavacFileManager;
 import com.sun.tools.javac.main.JavaCompiler;
-import com.sun.tools.javac.util.JavacFileManager;
 import java.io.File;
 import java.io.IOException;
 import javax.lang.model.element.TypeElement;
--- a/langtools/test/tools/javac/generics/Casting5.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/generics/Casting5.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/generics/InheritanceConflict.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/generics/InheritanceConflict.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/generics/InheritanceConflict2.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/generics/InheritanceConflict2.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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/langtools/test/tools/javac/generics/wildcards/T6450290.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/generics/wildcards/T6450290.java	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004-2006 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/langtools/test/tools/javac/util/filemanager/TestName.java	Thu Jul 03 10:09:25 2008 -0700
+++ b/langtools/test/tools/javac/util/filemanager/TestName.java	Mon Jul 07 09:11:55 2008 -0700
@@ -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
@@ -29,7 +29,7 @@
  * @author  Peter von der Ah\u00e9
  */
 
-import com.sun.tools.javac.util.JavacFileManager;
+import com.sun.tools.javac.file.JavacFileManager;
 
 public class TestName {
     public static void main(String... args) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/4870651/T4870651.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,81 @@
+/*
+ * 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 4870651
+ * @summary javap should recognize generics, varargs, enum
+ * @build T4870651 Test
+ * @run main T4870651
+ */
+
+import java.io.*;
+
+public class T4870651 {
+    public static void main(String[] args) throws Exception {
+        new T4870651().run();
+    }
+
+    public void run() throws IOException {
+        verify("Test",
+               "class Test<T, E extends java.lang.Exception & java.lang.Comparable<T>, U extends java.lang.Comparable>",
+               "v1(java.lang.String...)");
+
+        verify("Test$Enum",
+               "flags: ACC_FINAL, ACC_SUPER, ACC_ENUM",
+               "flags: ACC_PUBLIC, ACC_STATIC, ACC_FINAL, ACC_ENUM");
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    String javap(String className) {
+        String testClasses = System.getProperty("test.classes", ".");
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        String[] args = { "-classpath", testClasses, "-v", className };
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        String output = sw.toString();
+        System.out.println("class " + className);
+        System.out.println(output);
+        return output;
+    }
+
+    void verify(String className, String... expects) {
+        String output = javap(className);
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/4870651/Test.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,76 @@
+/*
+ * 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.util.*;
+
+abstract class Test<T,E extends Exception & Comparable<T>,U extends Comparable> {
+    T t;
+
+    Test(T t) { }
+    <G> Test(G g, int i) { }
+
+    Test(String... args) { }
+    Test(int i, Object[]... args) { }
+    abstract void v1(String... args);
+    abstract void v2(int i, String[]... args);
+
+    abstract void a1(int x);
+    abstract void a2(int[] x);
+    abstract void a3(T x);
+    abstract void a4(T[] x);
+
+    abstract int r1();
+    abstract int[] r2();
+    abstract T r3();
+    abstract T[] r4();
+
+    abstract <G> void ga1(int x);
+    abstract <G> void ga2(int[] x);
+    abstract <G> void ga3(G x);
+    abstract <G> void ga4(G[] x);
+
+    abstract <G> int gr1();
+    abstract <G> int[] gr2();
+    abstract <G> G gr3();
+    abstract <G> G[] gr4();
+
+    abstract <G extends Exception> void ge() throws G;
+
+    abstract void w(List<?> l);
+    abstract void we(List<? extends T> l);
+    abstract void ws(List<? super T> l);
+
+    abstract void t1() throws Error;
+    abstract void t2() throws E;
+    abstract void t3() throws E,Error;
+
+    abstract void i1(Test<T, E, Comparable> x);
+    abstract void i3(Test<T, E, Comparable>.Inner<String> x);
+
+    class Inner<Q> { }
+    class Inner2<Q> extends Inner<Q> { }
+
+    class Simple { }
+
+    enum Enum { e1, e2, e3 }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/ListTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,147 @@
+/*
+ * 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.*;
+import java.util.*;
+import javax.tools.*;
+
+/*
+ * @test
+ * @bug 6439940
+ * @summary Cleanup javap implementation
+ * @run main/othervm ListTest
+ */
+public class ListTest {
+    public static void main(String[] args) throws Exception {
+        new ListTest().run();
+    }
+
+    ListTest() {
+        String v = System.getProperty("view.cmd");
+        //      v = "/opt/teamware/7.7/bin/filemerge -r";
+        if (v != null) {
+            viewResults = true;
+            viewCmd = Arrays.asList(v.split(" +"));
+        }
+    }
+
+    void run() throws Exception {
+        StandardLocation[] locs = new StandardLocation[] {
+            StandardLocation.PLATFORM_CLASS_PATH,
+            StandardLocation.CLASS_PATH,
+        };
+
+        int count = 0;
+        int pass = 0;
+        for (StandardLocation loc: locs) {
+            for (String testClassName: list(loc)) {
+                count++;
+                if (test(testClassName))
+                    pass++;
+            }
+        }
+
+        if (pass < count)
+            throw new Error(pass + "/" + count + " test cases passed");
+    }
+
+    Iterable<String> list(StandardLocation loc) throws IOException {
+        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        StandardJavaFileManager sfm = compiler.getStandardFileManager(null, null, null);
+        Set<JavaFileObject.Kind> kinds = Collections.singleton(JavaFileObject.Kind.CLASS);
+
+        List<String> list = new ArrayList<String>();
+        for (JavaFileObject fo: sfm.list(loc, testPackage, kinds, true)) {
+            //System.err.println(com.sun.tools.javac.util.Old199.getPath(fo));
+            list.add(sfm.inferBinaryName(loc, fo));
+        }
+        return list;
+    }
+
+    boolean test(String testClassName) throws Exception {
+        String[] args = new String[options.size() + 1];
+        options.toArray(args);
+        args[args.length - 1] = testClassName;
+        String oldOut = runOldJavap(args);
+        String newOut = runNewJavap(args);
+        boolean ok = oldOut.equals(newOut);
+        System.err.println((ok ? "pass" : "FAIL") + ": " + testClassName);
+        if (!ok && viewResults)
+            view(oldOut, newOut);
+        return ok;
+    }
+
+    String runOldJavap(String[] args) {
+        //System.err.println("OLD: " + Arrays.asList(args));
+        PrintStream oldOut = System.out;
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(out));
+        try {
+            sun.tools.javap.Main.entry(args);
+        } finally {
+            System.setOut(oldOut);
+        }
+        return out.toString();
+    }
+
+    String runNewJavap(String[] args) {
+        String[] nArgs = new String[args.length + 2];
+        nArgs[0] = "-XDcompat";
+        nArgs[1] = "-XDignore.symbol.file";
+        System.arraycopy(args, 0, nArgs, 2, args.length);
+        //System.err.println("NEW: " + Arrays.asList(nArgs));
+        StringWriter out = new StringWriter();
+        com.sun.tools.javap.Main.run(nArgs, new PrintWriter(out, true));
+        return out.toString();
+    }
+
+    File write(String text, String suffix) throws IOException {
+        File f = File.createTempFile("ListTest", suffix);
+        FileWriter out = new FileWriter(f);
+        out.write(text);
+        out.close();
+        return f;
+    }
+
+    void view(String oldOut, String newOut) throws Exception {
+        File oldFile = write(oldOut, "old");
+        File newFile = write(newOut, "new");
+        List<String> cmd = new ArrayList<String>();
+        cmd.addAll(viewCmd);
+        cmd.add(oldFile.getPath());
+        cmd.add(newFile.getPath());
+        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
+        p.getOutputStream().close();
+        String line;
+        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        while ((line = in.readLine()) != null)
+            System.err.println(line);
+        in.close();
+        p.waitFor();
+    }
+
+    String testPackage = "java.lang";
+    List<String> options = Arrays.asList("-v");
+    boolean viewResults;
+    List<String> viewCmd;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/OptionTest.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,143 @@
+/*
+ * 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.
+ */
+
+import java.io.*;
+import java.util.*;
+
+/*
+ * @test
+ * @bug 6439940
+ * @summary Cleanup javap implementation
+ * @run main/othervm OptionTest
+ */
+public class OptionTest {
+    public static void main(String[] args) throws Exception {
+        new OptionTest().run();
+    }
+
+    OptionTest() {
+        String v = System.getProperty("view.cmd");
+        if (v != null) {
+            viewResults = true;
+            viewCmd = Arrays.asList(v.split(" +"));
+        }
+    }
+
+
+    void run() throws Exception {
+        int count = 0;
+        int pass = 0;
+        // try combinations of options and compare old javap against new javap
+        for (int i = 0; i < (1<<8); i++) {
+            List<String> options = new ArrayList<String>();
+            if ((i & 0x01) != 0)
+                options.add("-c");
+            if ((i & 0x02) != 0)
+                options.add("-l");
+            if ((i & 0x04) != 0)
+                options.add("-public");
+            if ((i & 0x08) != 0)
+                options.add("-protected");
+            if ((i & 0x10) != 0)
+                options.add("-package");
+            if ((i & 0x20) != 0)
+                options.add("-private");
+            if ((i & 0x40) != 0)
+                options.add("-s");
+            if ((i & 0x80) != 0)
+                options.add("-verbose");
+            count++;
+            if (test(options))
+                pass++;
+        }
+
+        if (pass < count)
+            throw new Error(pass + "/" + count + " test cases passed");
+    }
+
+    boolean test(List<String> options) throws Exception {
+        String[] args = new String[options.size() + 1];
+        options.toArray(args);
+        args[args.length - 1] = testClassName;
+        String oldOut = runOldJavap(args);
+        String newOut = runNewJavap(args);
+        boolean ok = oldOut.equals(newOut);
+        System.err.println((ok ? "pass" : "FAIL") + ": " + options);
+        if (!ok && viewResults)
+            view(oldOut, newOut);
+        return ok;
+    }
+
+    String runOldJavap(String[] args) {
+        //System.err.println("OLD: " + Arrays.asList(args));
+        PrintStream oldOut = System.out;
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        System.setOut(new PrintStream(out));
+        try {
+            sun.tools.javap.Main.entry(args);
+        } finally {
+            System.setOut(oldOut);
+        }
+        return out.toString();
+    }
+
+    String runNewJavap(String[] args) {
+        String[] nArgs = new String[args.length + 2];
+        nArgs[0] = "-XDcompat";
+        nArgs[1] = "-XDignore.symbol.file";
+        System.arraycopy(args, 0, nArgs, 2, args.length);
+        //System.err.println("NEW: " + Arrays.asList(nArgs));
+        StringWriter out = new StringWriter();
+        com.sun.tools.javap.Main.run(nArgs, new PrintWriter(out, true));
+        return out.toString();
+    }
+
+    File write(String text, String suffix) throws IOException {
+        File f = File.createTempFile("OptionTest", suffix);
+        FileWriter out = new FileWriter(f);
+        out.write(text);
+        out.close();
+        return f;
+    }
+
+    void view(String oldOut, String newOut) throws Exception {
+        File oldFile = write(oldOut, "old");
+        File newFile = write(newOut, "new");
+        List<String> cmd = new ArrayList<String>();
+        cmd.addAll(viewCmd);
+        cmd.add(oldFile.getPath());
+        cmd.add(newFile.getPath());
+        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
+        p.getOutputStream().close();
+        String line;
+        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        while ((line = in.readLine()) != null)
+            System.err.println(line);
+        in.close();
+        p.waitFor();
+    }
+
+    String testClassName = "java.lang.SecurityManager";
+    boolean viewResults;
+    List<String> viewCmd;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4075403.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,73 @@
+/*
+ * 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 4075403
+ * @summary Use javap to inquire about a specific inner class
+ */
+
+
+import java.io.*;
+
+public class T4075403 {
+    public static void main(String[] args) throws Exception {
+        new T4075403().run();
+    }
+
+    public void run() throws IOException {
+
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        javap("Outer.Inner");
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Outer.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class Outer { ");
+        out.println("    class Inner { }");
+        out.println("}");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { "-g", f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(String className) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-classpath", ".", className }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        System.out.println(sw.toString());
+        return sw.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4459541.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,112 @@
+/*
+ * 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 4459541
+ * @summary "javap -l" shows line numbers as signed short; they should be unsigned.
+ */
+
+import java.io.*;
+
+public class T4459541 {
+    public static void main(String[] args) throws Exception {
+        new T4459541().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        String output = javap(classFile);
+        verify(output);
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Test.java");
+        out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        println("class Test {");
+        println("void begin(int i) {");
+        println("i++;");
+        println("i++;");
+        println("}");
+        while (line < 32750)
+            println("// " + line);
+        println("void before_32767(int i) {");
+        println("i++;");
+        println("i++;");
+        println("}");
+        while (line < 32768-4)
+            println("// " + line);
+        println("void straddle_32768(int i) {");
+        while (line < 32768+4)
+            println("i++;");
+        println("}");
+        while (line < 65520)
+            println("// " + line);
+        println("void between_32768_and_65536(int i) {");
+        println("i++;");
+        println("i++;");
+        println("}");
+        while (line < 65536-4)
+            println("// " + line);
+        println("void straddle_65536(int i) {");
+        while (line < 65536+4)
+            println("i++;");
+        println("}");
+        println("}");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(File f) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-l", f.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+
+    void verify(String output) {
+        System.out.println(output);
+        if (output.indexOf("-") >= 0)
+            throw new Error("- found in output");
+    }
+
+    void println(String text) {
+        out.println(text);
+        line++;
+    }
+
+    PrintWriter out;
+    int line = 1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4501660.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,76 @@
+/*
+ * 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 4501660
+ * @summary change diagnostic of -help as 'print this help message and exit'
+ *            (actually, verify -help does not cause premature exit)
+ */
+
+import java.io.*;
+import java.util.zip.*;
+
+public class T4501660 {
+    public static void main(String[] args) throws Exception {
+        new T4501660().run();
+    }
+
+    public void run() throws IOException {
+        String testClasses = System.getProperty("test.classes", ".");
+        String output = javap("-classpath", testClasses, "-help", "T4501660");
+        verify(output,
+               "-public", "-protected", "-private", // check -help output is present
+               "class T4501660"                     // check class output is present
+               );
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    String javap(String... args) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        //sun.tools.javap.Main.entry(args);
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        System.out.println(sw);
+        return sw.toString();
+    }
+
+    void verify(String output, String... expects) {
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4876942.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,70 @@
+/*
+ * 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 4876942
+ * @summary javap invoked without args does not print help screen
+ */
+
+import java.io.*;
+import java.util.zip.*;
+
+public class T4876942 {
+    public static void main(String[] args) throws Exception {
+        new T4876942().run();
+    }
+
+    public void run() throws IOException {
+        String output = javap();
+        verify(output, "-public", "-protected", "-private"); // check that some of the options are listed
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    String javap(String... args) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        //sun.tools.javap.Main.entry(args);
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+
+    void verify(String output, String... expects) {
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4880663.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,88 @@
+/*
+ * 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 4880663
+ * @summary javap could output whitespace between class name and opening brace
+ */
+
+
+import java.io.*;
+
+public class T4880663 {
+    public static void main(String[] args) throws Exception {
+        new T4880663().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        verify(classFile, "class Test {");
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Test.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class Test { }");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { "-g", f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(File classFile) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { classFile.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        System.out.println(sw.toString());
+        return sw.toString();
+    }
+
+    void verify(File classFile, String... expects) {
+        String output = javap(classFile);
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T4975569.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,94 @@
+/*
+ * 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 4975569 6622215
+ * @summary javap doesn't print new flag bits
+ */
+
+import java.io.*;
+import java.util.*;
+
+public class T4975569
+{
+    public static void main(String... args) {
+        new T4975569().run();
+    }
+
+    void run() {
+        verify("T4975569$Anno", "flags: ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION");
+        verify("T4975569$E",    "flags: ACC_FINAL, ACC_SUPER, ACC_ENUM");
+        verify("T4975569$S",    "flags: ACC_BRIDGE, ACC_SYNTHETIC",
+                                "InnerClasses: \n   static");
+        verify("T4975569$V",    "void m(java.lang.String...)",
+                                "flags: ACC_VARARGS");
+        verify("T4975569$Prot", "InnerClasses: \n   protected");
+        //verify("T4975569$Priv", "InnerClasses");
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    void verify(String className, String... expects) {
+        String output = javap(className);
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+
+    String javap(String className) {
+        String testClasses = System.getProperty("test.classes", ".");
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        String[] args = { "-v", "-classpath", testClasses, className };
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        String output = sw.toString();
+        System.out.println("class " + className);
+        System.out.println(output);
+        return output;
+    }
+
+    List x() { return null; };
+
+    class V { void m(String... args) { } }
+    enum E { e; }
+    @interface Anno { }
+    static class S extends T4975569 {
+        ArrayList x() { return null; }
+    }
+
+    protected class Prot { }
+    //private class Priv { int i; }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6271787.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,90 @@
+/*
+ * 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 6271787
+ * @summary javap dumps LocalVariableTypeTable attribute in hex, needs to print a table
+ */
+
+import java.io.*;
+
+public class T6271787 {
+    public static void main(String[] args) throws Exception {
+        new T6271787().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+
+        verify(classFile,
+               "LocalVariableTypeTable:",
+               "0       5     0  this   LTest<TT;>;" // should consider decoding this in javap
+               );
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Test.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class Test<T> { }");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { "-g", f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(File f) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-v", f.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+
+    void verify(File classFile, String... expects) {
+        String output = javap(classFile);
+        for (String expect: expects) {
+            if (output.indexOf(expect)< 0)
+                error(expect + " not found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6474890.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,95 @@
+/*
+ * 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 6474890
+ * @summary javap does not open .zip files in -classpath
+ */
+
+import java.io.*;
+import java.util.zip.*;
+
+public class T6474890 {
+    public static void main(String[] args) throws Exception {
+        new T6474890().run();
+    }
+
+    public void run() throws IOException {
+        File classDir = new File("classes");
+        classDir.mkdir();
+
+        String className = "Test";
+        File javaFile = writeTestFile(className);
+        compileTestFile(classDir, javaFile);
+
+        File zipFile = zip(classDir, new File(classDir + ".zip"));
+        javap("-classpath", zipFile.getPath(), className);
+
+        File jarFile = zip(classDir, new File(classDir + ".jar"));
+        javap("-classpath", zipFile.getPath(), className);
+    }
+
+    File writeTestFile(String name) throws IOException {
+        File f = new File(name + ".java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class " + name + " { }");
+        out.close();
+        return f;
+    }
+
+    void compileTestFile(File classDir, File file) {
+        int rc = com.sun.tools.javac.Main.compile(
+           new String[] { "-d", classDir.getPath(), file.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+    }
+
+    File zip(File dir, File zipFile) throws IOException {
+        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
+        for (File file: dir.listFiles()) {
+            if (file.isFile()) {
+                byte[] data = new byte[(int) file.length()];
+                DataInputStream in = new DataInputStream(new FileInputStream(file));
+                in.readFully(data);
+                in.close();
+                zipOut.putNextEntry(new ZipEntry(file.getName()));
+                zipOut.write(data, 0, data.length);
+                zipOut.closeEntry();
+            }
+        }
+        zipOut.close();
+        return zipFile;
+    }
+
+    String javap(String... args) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        //sun.tools.javap.Main.entry(args);
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6587786.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,52 @@
+/*
+ * 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 6587786
+ * @summary Javap throws error : "ERROR:Could not find <classname>" for JRE classes
+ */
+
+import java.io.*;
+
+public class T6587786 {
+    public static void main(String[] args) throws Exception {
+        new T6587786().run();
+    }
+
+    public void run() throws IOException {
+        javap("com.sun.javadoc.Doc", "com.sun.crypto.provider.ai");
+        javap("com.sun.crypto.provider.ai", "com.sun.javadoc.ClassDoc");
+    }
+
+    void javap(String... args) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        //sun.tools.javap.Main.entry(args);
+        int rc = com.sun.tools.javap.Main.run(args, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        System.out.println(sw.toString());
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6622216.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,77 @@
+/*
+ * 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 6622216
+ * @summary javap names some attributes incorrectly
+ */
+
+import java.io.*;
+
+public class T6622216 {
+    public static void main(String[] args) throws Exception {
+        new T6622216().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        String output = javap(classFile);
+        verify(output);
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Outer.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class Outer {");
+        out.println("    class Inner { }");
+        out.println("}");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(File f) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-v", f.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+
+    void verify(String output) {
+        System.out.println(output);
+        if (output.indexOf("InnerClasses") == -1)
+            throw new Error("InnerClasses not found in output");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6622232.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,97 @@
+/*
+ * 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 6622232
+ * @summary javap gets whitespace confused
+ */
+
+import java.io.*;
+
+public class T6622232 {
+    public static void main(String[] args) throws Exception {
+        new T6622232().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        String output = javap(classFile);
+
+        // these are all examples of bad whitespace from old javap
+        verifyNot(output,
+                  "\\Q  Constant value: int 3Deprecated: true\\E",
+                  "^Deprecated: true",
+                  "\\Q   throws java.lang.Exception, java.lang.Error  Deprecated: true\\E"
+               );
+
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Test.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("class Test { ");
+        out.println("    @Deprecated static final int f1 = 3;");
+        out.println("    @Deprecated int f2;");
+        out.println("    @Deprecated void m() throws Exception, Error { }");
+        out.println("}");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { "-g", f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    String javap(File f) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-v", f.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        System.out.println(sw.toString());
+        return sw.toString();
+    }
+
+    void verifyNot(String output, String... unexpects) {
+        for (String unexpect: unexpects) {
+            if (output.matches(unexpect))
+                error(unexpect + " unexpectedly found");
+        }
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6622260.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,197 @@
+/*
+ * 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 6622260
+ * @summary javap prints negative bytes incorrectly in hex
+ */
+
+import java.io.*;
+
+public class T6622260 {
+    public static void main(String[] args) throws Exception {
+        new T6622260().run();
+    }
+
+    public void run() throws IOException {
+        File javaFile = writeTestFile();
+        File classFile = compileTestFile(javaFile);
+        modifyClassFile(classFile);
+        String output = javap(classFile);
+        verify(output);
+    }
+
+    File writeTestFile() throws IOException {
+        File f = new File("Test.java");
+        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
+        out.println("@Deprecated class Test { int f; void m() { } }");
+        out.close();
+        return f;
+    }
+
+    File compileTestFile(File f) {
+        int rc = com.sun.tools.javac.Main.compile(new String[] { f.getPath() });
+        if (rc != 0)
+            throw new Error("compilation failed. rc=" + rc);
+        String path = f.getPath();
+        return new File(path.substring(0, path.length() - 5) + ".class");
+    }
+
+    void modifyClassFile(File f) throws IOException {
+        String newAttributeName = "NonstandardAttribute";
+        byte[] newAttributeData = { 0, 1, 2, 127, (byte)128, (byte)129, (byte)254, (byte)255 };
+
+        DataInputStream in = new DataInputStream(new FileInputStream(f));
+        byte[] data = new byte[(int) f.length()];
+        in.readFully(data);
+        in.close();
+
+        in = new DataInputStream(new ByteArrayInputStream(data));
+        in.skipBytes(4); // magic
+        in.skipBytes(2); // minor
+        in.skipBytes(2); // minor
+
+        int constantPoolPos = data.length - in.available();
+        int constant_pool_count = skipConstantPool(in);
+
+        int flagsPos = data.length - in.available();
+        in.skipBytes(2); // access_flags
+        in.skipBytes(2); // this_class
+        in.skipBytes(2); // super_class
+
+        int interfaces_count = in.readUnsignedShort();
+        in.skipBytes(interfaces_count * 2);
+
+        int field_count = in.readUnsignedShort();
+        for (int i = 0; i < field_count; i++) {
+            in.skipBytes(6); // access_flags, name_index, descriptor_index
+            skipAttributes(in);
+        }
+
+        int method_count = in.readUnsignedShort();
+        for (int i = 0; i < method_count; i++) {
+            in.skipBytes(6); // access_flags, name_index, descriptor_index
+            skipAttributes(in);
+        }
+
+        int classAttributesPos = data.length - in.available();
+        int attributes_count = in.readUnsignedShort();
+
+        f.renameTo(new File(f.getPath() + ".BAK"));
+        DataOutputStream out = new DataOutputStream(new FileOutputStream(f));
+
+        // copy head
+        out.write(data, 0, constantPoolPos);
+
+        // copy constant pool, adding in name of new attribute
+        out.writeShort(constant_pool_count + 1);
+        out.write(data, constantPoolPos + 2, flagsPos - constantPoolPos - 2);
+        out.write(1); // CONSTANT_Utf8
+        out.writeUTF(newAttributeName);
+
+        // copy flags, class, superclass, interfaces, fields and methods
+        out.write(data, flagsPos, classAttributesPos - flagsPos);
+
+        // copy class attributes, adding in new attribute
+        out.writeShort(attributes_count + 1);
+        out.write(data, classAttributesPos + 2, data.length - classAttributesPos - 2);
+        out.writeShort(constant_pool_count); // index of new attribute name
+        out.writeInt(newAttributeData.length);
+        out.write(newAttributeData);
+        out.close();
+    }
+
+    int skipConstantPool(DataInputStream in) throws IOException {
+        int constant_pool_count = in.readUnsignedShort();
+        for (int i = 1; i < constant_pool_count; i++) {
+            int tag = in.readUnsignedByte();
+            switch (tag) {
+            case  1: // CONSTANT_Utf8
+                int length = in.readUnsignedShort();
+                in.skipBytes(length); // bytes
+                break;
+
+            case  3: // CONSTANT_Integer
+            case  4: // CONSTANT_Float
+                in.skipBytes(4); // bytes
+                break;
+
+            case  5: // CONSTANT_Long
+            case  6: // CONSTANT_Double
+                in.skipBytes(8); // high_bytes, low_bytes
+                break;
+
+            case  7: // CONSTANT_Class
+                in.skipBytes(2); // name_index
+                break;
+
+            case  8: // CONSTANT_String
+                in.skipBytes(2); // string_index
+                break;
+
+            case  9: // CONSTANT_FieldRef
+            case 10: // CONSTANT_Methodref
+            case 11: // CONSTANT_InterfaceMethodref
+                in.skipBytes(4); // class_index, name_and_type_index
+                break;
+
+            case 12: // CONSTANT_NameAndType
+                in.skipBytes(4); // name_index, descriptor_index
+                break;
+
+            default:
+                throw new Error("constant pool tag: " + tag);
+            }
+        }
+        return constant_pool_count;
+    }
+
+    int skipAttributes(DataInputStream in) throws IOException {
+        int attributes_count = in.readUnsignedShort();
+        for (int i = 0; i < attributes_count; i++) {
+            in.skipBytes(2); // attribute_name_index;
+            int length = in.readInt();
+            in.skipBytes(length); // info
+        }
+        return attributes_count;
+    }
+
+    String javap(File f) {
+        StringWriter sw = new StringWriter();
+        PrintWriter out = new PrintWriter(sw);
+        int rc = com.sun.tools.javap.Main.run(new String[] { "-v", f.getPath() }, out);
+        if (rc != 0)
+            throw new Error("javap failed. rc=" + rc);
+        out.close();
+        return sw.toString();
+    }
+
+    void verify(String output) {
+        System.out.println(output);
+        if (output.indexOf("-") >= 0)
+            throw new Error("- found in output");
+        if (output.indexOf("FFFFFF") >= 0)
+            throw new Error("FFFFFF found in output");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T6715767.java	Mon Jul 07 09:11:55 2008 -0700
@@ -0,0 +1,50 @@
+/*
+ * 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 6715767
+ * @summary javap on java.lang.ClassLoader crashes
+ */
+
+import java.io.*;
+
+public class T6715767 {
+    public static void main(String... args) throws Exception {
+        new T6715767().run();
+    }
+
+    void run() throws Exception {
+        StringWriter sw = new StringWriter();
+        PrintWriter pw = new PrintWriter(sw);
+        String[] args = { "java.lang.ClassLoader" };
+        int rc = com.sun.tools.javap.Main.run(args, pw);
+        if (rc != 0 ||
+            sw.toString().indexOf("at com.sun.tools.javap.JavapTask.run") != -1) {
+            System.err.println("rc: " + rc);
+            System.err.println("log:\n" + sw);
+            throw new Exception("unexpected result");
+        }
+    }
+}
+
--- a/make/Defs-internal.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/make/Defs-internal.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 1995-2007 Sun Microsystems, Inc.  All Rights Reserved.
+# Copyright 1995-2008 Sun Microsystems, Inc.  All Rights Reserved.
 # 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/jdk-rules.gmk	Thu Jul 03 10:09:25 2008 -0700
+++ b/make/jdk-rules.gmk	Mon Jul 07 09:11:55 2008 -0700
@@ -1,5 +1,5 @@
 #
-# Copyright 2001-2007 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