--- /dev/null
+### Changes
+
+#### version 3.29 on May 13, 2022
+
+* GitHub Issue #378, PR #278, #299, #382, #383, #390, #391, #395, #399, #409.
+
+#### version 3.28 on May 8, 2021
+
+* GitHub Issue #305, #328, #339, #350, #357, and PR #363.
+
+#### version 3.27 on March 19, 2020
+
+* GitHub Issue #271 (PR #279), #280 (PR #281), #282, and PR #294.
+
+#### version 3.26 on October 3, 2019
+
+* GitHub Issue #270 (PR #272), #265 (PR #267), #271, #222, and #275.
+
+#### version 3.25 on April 16, 2019
+
+* GitHub Issue #72 (PR #231), #241, #242 (PR #243), PR #244,
+#246 (PR #247), PR #250, #252 (PR #253), PR #254.
+
+#### version 3.24.1 on December 9, 2018
+
+* GitHub Issue #228, #229
+
+#### version 3.24 on November 1, 2018
+
+* Java 11 supports.
+* JIRA JASSIST-267.
+* Github PR #218.
+
+#### version 3.23.1 on July 2, 2018
+
+* Github PR #171.
+
+#### version 3.23 on June 21, 2018
+
+* Fix leaking file handlers in ClassPool and removed ClassPath.close(). Github issue #165.
+
+#### version 3.22 on October 10, 2017
+
+* Java 9 supports.
+* JIRA JASSIST-261.
+
+#### version 3.21 on October 4, 2016
+
+* JIRA JASSIST-244, 245, 248, 250, 255, 256, 259, 262.
+* `javassist.tools.Callback` was modified to be Java 1.4 compatible.
+ The parameter type of `Callback#result()` was changed.
+* The algorithm for generating a stack-map table was modified to fix github issue #83.
+* A bug of ProxyFactory related to default methods was fixed. It is github issue #45.
+
+#### version 3.20 on June 25, 2015
+
+* JIRA JASSIST-241, 242, 246.
+
+#### version 3.19 on January 6, 2015
+
+* JIRA JASSIST-158, 205, 206, 207, 208, 209, 211, 212, 216, 220, 223, 224,
+ 227, 230, 234, 235, 236, 237, 238, 240.
+
+#### version 3.18 on June 3, 2013
+
+* The source code repository has been moved to [GitHub](https://github.com/jboss-javassist/javassist).
+
+* JIRA JASSIST-181, 183, 184, 189, 162, 185, 186, 188, 190, 195, 199, 201.
+
+#### version 3.17.1 on December 3, 2012
+
+* JIRA JASSIST-177, 178, 182.
+
+#### version 3.17 on November 8, 2012
+
+* OSGi bundle info is now included in the jar file.
+
+* A stackmap generator has been rewritten.
+
+* JIRA JASSIST-160, 163, 166, 168, 170, 171, 174, 175, 176 have been fixed.
+
+#### version 3.16.1 on March 6, 2012
+
+* Maven now works. JIRA JASSIST-44, 106, 156 have been fixed.
+
+#### version 3.16 on February 19, 2012
+
+* JIRA JASSIST-126, 127, 144, 145, 146, 147, 149, 150, 151, 152, 153, 155.
+
+* `javassist.bytecode.analysis.ControlFlow` was added.
+
+* Java 7 compatibility.
+
+#### version 3.15 on July 8, 2011
+
+* The license was changed to MPL/LGPL/Apache triple.
+
+* JIRA JASSIST-138 and 142 were fixed.
+
+#### version 3.14 on October 5, 2010
+
+* JIRA JASSIST-121, 123, 128, 129, 130, 131, 132.
+
+#### version 3.13 on July 19, 2010
+
+* JIRA JASSIST-118, 119, 122, 124, 125.
+
+#### version 3.12.1 on June 10, 2010
+
+#### version 3.12 on April 16, 2010
+
+#### version 3.11 on July 3, 2009
+
+* JIRA JASSIST-67, 68, 74, 75, 76, 77, 81, 83, 84, 85, 86, 87 were fixed.
+
+* Now javassist.bytecode.CodeIterator can insert a gap into
+ a large method body more than 32KB. (JIRA JASSIST-79, 80)
+
+#### version 3.10 on March 5, 2009
+
+* JIRA JASSIST-69, 70, 71 were fixed.
+
+#### version 3.9 on October 9, 2008
+
+* ClassPool.makeClassIfNew(InputStream) was implemented.
+
+* CtNewMethod.wrapped(..) and CtNewConstructor.wrapped(..)
+ implicitly append a method like _added_m$0.
+ This method now has a synthetic attribute.
+
+* JIRA JASSIST-66 has been fixed.
+
+#### version 3.8.1 on July 17, 2008
+
+* CtClass.rebuildClassFile() has been added.
+
+* A few bugs of javassist.bytecode.analysis have been fixed.
+ 3.8.0 could not correctly deal with one letter class name
+ such as I and J.
+
+#### version 3.8.0 on June 13, 2008
+
+* javassist.bytecode.analysis was implemented.
+
+* JASSIST-45, 47, 51, 54-57, 60, 62 were fixed.
+
+#### version 3.7.1 on March 10, 2008
+
+* a bug of javassist.util.proxy has been fixed.
+
+#### version 3.7 on January 20, 2008
+
+* Several minor bugs have been fixed.
+
+#### version 3.6.0 on September 13, 2007
+
+#### version 3.6.0.CR1 on July 27, 2007
+
+* The stack map table introduced since Java 6 has been supported.
+
+* CtClass#getDeclaredBehaviors() now returns a class initializer
+ as well as methods and constructors.
+
+* The default status of automatic pruning was made off.
+ Instead of pruning, this version of Javassist compresses
+ the data structure of a class file after toBytecode() is called.
+ The compressed class file is automatically decompressed when needed.
+ This saves memory space better than pruning.
+
+* [JIRA JASSIST-33](http://jira.jboss.com/jira/browse/JASSIST-33) has been fixed.
+
+#### version 3.5 on April 29, 2007
+
+* Various minor updates.
+
+#### version 3.4 on November 17, 2006
+
+* A bug in CodeConverter#replaceFieldRead() and CodeConverter#replaceFieldWrite()
+ was fixed. [JBAOP-284](http://jira.jboss.com/jira/browse/JBAOP-284).
+
+
+
+* A synchronization bug and a performance bug in `javassist.util.proxy`
+ have been fixed
+ ([JASSIST-28](http://jira.jboss.com/jira/browse/JASSIST-28)).
+ Now generated proxy classes are cached. To turn the caching off,
+ set `ProxyFactory.useCache` to `false`.
+
+#### version 3.3 on August 17, 2006
+
+* CtClass#toClass() and ClassPool#toClass() were modified to accept a
+ `ProtectionDomain`
+ ([JASSIST-23](http://jira.jboss.com/jira/browse/JASSIST-23)).
+ Now ClassPool#toClass(CtClass, ClassLoader) should not be overridden. All
+ subclasses of ClassPool must override toClass(CtClass, ClassLoader,
+ ProtectionDomain).
+
+
+
+* CtClass#getAvailableAnnotations() etc. have been implemented.
+
+
+
+* A bug related to a way of dealing with a bridge method was fixed
+ ([HIBERNATE-37](http://jira.jboss.com/jira/browse/HIBERNATE-37)).
+
+
+
+* javassist.scopedpool package was added.
+
+#### version 3.2 on June 21, 2006
+
+* The behavior of CtBehavior#getParameterAnnotations() has been changed.
+ It is now compatible to Java Reflection API
+ ([JASSIST-19](http://jira.jboss.com/jira/browse/JASSIST-19)).
+
+#### version 3.2.0.CR2 on May 9, 2006
+
+* A bug of replace(String,ExprEditor) in javassist.expr.Expr has been fixed.
+
+* Updated ProxyFactory getClassLoader to choose the javassit class loader
+ when the proxy superclass has a null class loader (a jdk/endorsed class)
+ ([JASSIST-18](http://jira.jboss.com/jira/browse/JASSIST-18)).
+
+* Updated the throws clause of the javassist.util.proxy.MethodHandler
+ to be Throwable rather than Exception
+ ([JASSIST-16](http://jira.jboss.com/jira/browse/JASSIST-16)).
+
+#### version 3.2.0.CR1 on March 18, 2006
+
+* Annotations enhancements to javassist.bytecode.MethodInfo.
+
+* Allow a ClassPool to override the "guess" at the classloader to use.
+
+#### version 3.1 on February 23, 2006
+
+* getFields(), getMethods(), and getConstructors() in CtClass
+ were changed to return non-private memebers instead of only
+ public members.
+
+* getEnclosingClass() in javassist.CtClass was renamed
+ to getEnclosingMethod().
+
+* getModifiers() was extended to return Modifier.STATIC if the class
+ is a static inner class.
+
+* The return type of CtClass.stopPruning() was changed from void
+ to boolean.
+
+* toMethod() in javassist.CtConstructor has been implemented.
+
+* It includes new javassist.util.proxy package
+ similar to Enhancer of CGLIB.
+
+* The subpackages of Javassist were restructured.
+
+ * javassist.tool package was renamed to javassist.tools.
+
+ * HotSwapper was moved to javassist.util.
+
+ * Several subpackages were moved to javassist.tools.
+
+ * javassist.preproc package was elminated and the source was
+ moved to the sample directory.
+
+
+#### version 3.1 RC2 on September 7, 2005
+
+* RC2 is released mainly for an administrative reason.
+
+* A few bugs have been fixed.
+
+#### version 3.1 RC1 on August 29, 2005
+
+* Better annotation supports. See `CtClass.getAnnotations()`
+* javassist.tool.HotSwapper was added.
+
+* javassist.ClassPool.importPackage() was added.
+
+* The compiler now accepts array initializers
+ (only one dimensional arrays).
+
+* javassist.Dump was moved to javassist.tool.Dump.
+
+* Many bugs were fixed.
+
+#### version 3.0 on January 18, 2005
+
+* The compiler now supports synchronized statements and finally
+ clauses.
+
+* You can now remove a method and a field.
+
+#### version 3.0 RC1 on September 13, 2004.
+
+* CtClass.toClass() has been reimplemented. The behavior has been
+ changed.
+
+* javassist.expr.NewArray has been implemented. It enables modifying
+ an expression for array creation.
+
+* `.class` notation has been supported. The modified class
+ file needs javassist.runtime.DotClass at runtime.
+
+* a bug in `CtClass.getMethods()` has been fixed.
+
+* The compiler supports a switch statement.
+
+#### version 3.0 beta on May 18th, 2004.
+
+* The ClassPool framework has been redesigned.
+
+ * writeFile(), write(), ... in ClassPool have been moved to CtClass.
+
+ * The design of javassist.Translator has been changed.
+
+* javassist.bytecode.annotation has been added for meta tags.
+
+* CtClass.makeNestedClass() has been added.
+
+* The methods declared in javassist.bytecode.InnerClassesAttribute
+ have been renamed a bit.
+
+* Now local variables were made available in the source text passed to
+ CtBehavior.insertBefore(), MethodCall.replace(), etc.
+
+* CtClass.main(), which prints the version number, has been added.
+
+* ClassPool.SimpleLoader has been public.
+
+* javassist.bytecode.DeprecatedAttribute has been added.
+
+* javassist.bytecode.LocalVariableAttribute has been added.
+
+* CtClass.getURL() and javassist.ClassPath.find() has been added.
+
+* CtBehavior.insertAt() has been added.
+
+* CtClass.detach() has been added.
+
+* CodeAttribute.computeMaxStack() has been added.
+
+#### version 2.6 in August, 2003.
+
+* The behavior of CtClass.setSuperclass() was changed.
+ To obtain the previous behavior, call CtClass.replaceClassName().
+
+* CtConstructor.setBody() now works for class initializers.
+
+* CtNewMethod.delegator() now works for static methods.
+
+* javassist.expr.Expr.indexOfBytecode() has been added.
+
+* javassist.Loader has been modified so that getPackage() returns
+ a package object.
+
+* Now, the compiler can correctly compile a try statement and an
+ infinite while-loop.
+
+#### version 2.5.1 in May, 2003.
+Simple changes for integration with JBoss AOP
+
+* Made ClassPool.get0 protected so that subclasses of ClassPool can call it.
+
+* Moved all access to the class cache (the field ClassPool.classes) to a method called getCached(String classname). This is so subclasses of ClassPool can override this behavior.
+
+#### version 2.5 in May, 2003.
+From this version, Javassist is part of the JBoss project.
+
+* The license was changed from MPL to MPL/LGPL dual.
+
+* ClassPool.removeClassPath() and ClassPath.close() have been added.
+
+* ClassPool.makeClass(InputStream) has been added.
+
+* CtClass.makeClassInitializer() has been added.
+
+* javassist.expr.Expr has been changed to a public class.
+
+* javassist.expr.Handler has been added.
+
+* javassist.expr.MethodCall.isSuper() has been added.
+
+* CtMethod.isEmpty() and CtConstructor.isEmpty() have been added.
+
+* LoaderClassPath has been implemented.
+
+#### version 2.4 in February, 2003.
+
+* The compiler included in Javassist did not correctly work with
+ interface methods. This bug was fixed.
+
+* Now javassist.bytecode.Bytecode allows more than 255 local
+ variables in the same method.
+
+* javassist.expr.Instanceof and Cast have been added.
+
+* javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.where()
+ have been added. They return the caller-side method surrounding the
+ expression.
+
+* javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.mayThrow()
+ have been added.
+
+* $class has been introduced.
+
+* The parameters to replaceFieldRead(), replaceFieldWrite(),
+ and redirectFieldAccess() in javassist.CodeConverter are changed.
+
+* The compiler could not correctly handle a try-catch statement.
+ This bug has been fixed.
+
+#### version 2.3 in December, 2002.
+
+* The tutorial has been revised a bit.
+
+* SerialVersionUID class was donated by Bob Lee. Thanks.
+
+* CtMethod.setBody() and CtConstructor.setBody() have been added.
+
+* javassist.reflect.ClassMetaobject.useContextClassLoader has been added.
+ If true, the reflection package does not use Class.forName() but uses
+ a context class loader specified by the user.
+
+* $sig and $type are now available.
+
+* Bugs in Bytecode.write() and read() have been fixed.
+
+#### version 2.2 in October, 2002.
+
+* The tutorial has been revised.
+
+* A new package `javassist.expr` has been added.
+ This is replacement of classic `CodeConverter`.
+
+* javassist.ConstParameter was changed into
+ javassist.CtMethod.ConstParameter.
+
+* javassist.FieldInitializer was renamed into
+ javassist.CtField.Initializer.
+
+* A bug in javassist.bytecode.Bytecode.addInvokeinterface() has been
+ fixed.
+
+* In javassist.bytecode.Bytecode, addGetfield(), addGetstatic(),
+ addInvokespecial(), addInvokestatic(), addInvokevirtual(),
+ and addInvokeinterface()
+ have been modified to update the current statck depth.
+
+#### version 2.1 in July, 2002.
+
+* javassist.CtMember and javassist.CtBehavior have been added.
+
+* javassist.CtClass.toBytecode() has been added.
+
+* javassist.CtClass.toClass() and javassist.ClassPool.writeAsClass()
+ has been added.
+
+* javassist.ByteArrayClassPath has been added.
+
+* javassist.bytecode.Mnemonic has been added.
+
+* Several bugs have been fixed.
+
+#### version 2.0 (major update) in November, 2001.
+
+* The javassist.bytecode package has been provided. It is a
+ lower-level API for directly modifying a class file although
+ the users must have detailed knowledge of the Java bytecode.
+
+* The mechanism for creating CtClass objects have been changed.
+
+* javassist.tool.Dump moves to the javassist package.
+
+version 1.0 in July, 2001.
+
+* javassist.reflect.Metaobject and ClassMetaobject was changed.
+ Now they throw the same exception that they receive from a
+ base-level object.
+
+#### version 0.8
+
+* javassist.tool.Dump was added. It is a class file viewer.
+
+* javassist.FiledInitializer.byNewArray() was added. It is for
+ initializing a field with an array object.
+
+* javassist.CodeConverter.redirectMethodCall() was added.
+
+* javassist.Run was added.
+
+#### version 0.7
+
+* javassit.Loader was largely modified. javassist.UserLoader was
+ deleted. Instead, Codebase was renamed to ClassPath
+ and UserClassPath was added. Now programmers who want to
+ customize Loader must write a class implementing UserClassPath
+ instead of UserLoader. This change is for sharing class search paths
+ between Loader and CtClass.CtClass(String).
+
+* CtClass.addField(), addMethod(), addConstructor(), addWrapper() were
+ also largely modified so that it receives CtNewMethod, CtNewConstructor,
+ or CtNewField. The static methods for creating these objects were
+ added to the API.
+
+* Constructors are now represented by CtConstructor objects.
+ CtConstructor is a subclass of CtMethod.
+
+* CtClass.getUserAttribute() was removed. Use CtClass.getAttribute().
+
+* javassist.rmi.RmiLoader was added.
+
+* javassist.reflect.Metalevel._setMetaobject() was added. Now
+ metaobjects can be replaced at runtime.
+
+#### version 0.6
+
+* Javassist was modified to correctly deal with array types appearing
+ in signatures.
+
+* A bug crashed resulting bytecode if a class includes a private static
+ filed. It has been fixed.
+
+* javassist.CtNewInterface was added.
+
+* javassist.Loader.recordClass() was renamed into makeClass().
+
+* javassist.UserLoader.loadClass() was changed to take the second
+parameter.
+
+#### version 0.5
+
+* a bug-fix version.
+
+#### version 0.4
+
+* Major update again. Many classes and methods were changed.
+Most of methods taking java.lang.Class have been changed to
+take javassist.CtClass.
+
+#### version 0.3
+
+* Major update. Many classes and methods were changed.
+
+#### version 0.2
+
+* Jar/zip files are supported.
+
+#### version 0.1 on April 16, 1999.
+
+* The first release.
+++ /dev/null
-<html>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <TITLE>Read Me First</TITLE>
-</HEAD>
-<body>
-
-<h1>Javassist version 3</h1>
-
-<h3>Copyright (C) 1999-2021 by Shigeru Chiba, All rights reserved.</h3>
-
-<p><br></p>
-
-<p>Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation
-simple. It is a class library for editing bytecodes in Java;
-it enables Java programs to define a new class at runtime and to
-modify a class file when the JVM loads it. Unlike other similar
-bytecode editors, Javassist provides two levels of API: source level
-and bytecode level. If the users use the source-level API, they can
-edit a class file without knowledge of the specifications of the Java
-bytecode. The whole API is designed with only the vocabulary of the
-Java language. You can even specify inserted bytecode in the form of
-source text; Javassist compiles it on the fly. On the other hand, the
-bytecode-level API allows the users to directly edit a class file as
-other editors.
-
-<p><br>
-
-<h2>Files</h2>
-
-<ul>
-<table>
-<tr>
-<td><li><tt><a href="License.html">License.html</a></tt></td>
-<td>License file (MPL/LGPL/Apache triple license)
-(Also see the <a href="#copyright">copyright notices</a> below)</td>
-</tr>
-
-<tr>
-<td><li><tt><a href="tutorial/tutorial.html">tutorial/tutorial.html</a></tt></td>
-<td>Tutorial</td>
-</tr>
-
-<tr>
-<td><li><tt>./javassist.jar</tt></td>
-<td>The Javassist jar file (class files)</td>
-</tr>
-
-<tr>
-<td><li><tt>./src/main</tt></td>
-<td>The source files</td>
-</tr>
-
-<tr>
-<td><li><tt><a href="html/index.html">html/index.html</a></tt></td>
-<td>The top page of the Javassist API document.</td>
-</tr>
-
-<tr>
-<td><li><tt>./sample/</tt></td>
-<td>Sample programs</td>
-</tr>
-</table>
-</ul>
-
-<p><br>
-
-<h2>How to run sample programs</h2>
-
-<p>JDK 1.4 or later is needed.
-
-<h3>0. If you have Apache Ant</h3>
-
-<p>Run the sample-all task.
-Otherwise, follow the instructions below.
-
-<h3>1. Move to the directory where this Readme.html file is located.</h3>
-
-<p>In the following instructions, we assume that the javassist.jar
-file is included in the class path.
-For example, the javac and java commands must receive
-the following <code>classpath</code> option:
-
-<ul><pre>
--classpath ".:javassist.jar"
-</pre></ul>
-
-<p>If the operating system is Windows, the path
-separator must be not <code>:</code> (colon) but
-<code>;</code> (semicolon). The java command can receive
-the <code>-cp</code> option
-as well as <code>-classpath</code>.
-
-<p>If you don't want to use the class-path option, you can make
-<code>javassist.jar</code> included in the <code>CLASSPATH</code>
-environment:
-
-<ul><pre>
-export CLASSPATH=.:javassist.jar
-</pre></ul>
-
-<p>or if the operating system is Windows:
-
-<ul><pre>
-set CLASSPATH=.;javassist.jar
-</pre></ul>
-
-
-<p>Otherwise, you can copy <tt>javassist.jar</tt> to the directory
-
-<ul><<i>java-home</i>><tt>/jre/lib/ext</tt>.</ul>
-
-<p><<i>java-home</i>> depends on the system. It is usually
-<tt>/usr/local/java</tt>, <tt>c:\j2sdk1.4\</tt>, etc.
-
-<h3>2. sample/Test.java</h3>
-
-<p> This is a very simple program using Javassist.
-
-<p> To run, type the commands:
-
-<ul><pre>
-% javac sample/Test.java
-% java sample.Test
-</pre></ul>
-
-<p> For more details, see <a type="text/plain" href="sample/Test.java">sample/Test.java</a>
-
-<h3>3. sample/reflect/*.java</h3>
-
-<p> This is the "verbose metaobject" example well known in reflective
- programming. This program dynamically attaches a metaobject to
- a Person object. The metaobject prints a message if a method
- is called on the Person object.
-
-<p> To run, type the commands:
-
-<ul><pre>
-% javac sample/reflect/*.java
-% java javassist.tools.reflect.Loader sample.reflect.Main Joe
-</pre></ul>
-
-<p>Compare this result with that of the regular execution without reflection:
-
-<ul><pre>% java sample.reflect.Person Joe</pre></ul>
-
-<p> For more details, see <a type="text/plain" href="sample/reflect/Main.java">sample/reflect/Main.java</a>
-
-<p> Furthermore, the Person class can be statically modified so that
- all the Person objects become reflective without sample.reflect.Main.
- To do this, type the commands:
-
-<ul><pre>
-% java javassist.tools.reflect.Compiler sample.reflect.Person -m sample.reflect.VerboseMetaobj
-</pre></ul>
-
-<p> Then,
-<ul><pre>
-% java sample.reflect.Person Joe
-</pre></ul>
-
-<h3>4. sample/duplicate/*.java</h3>
-
-<p> This is another example of reflective programming.
-
-<p> To run, type the commands:
-
-<ul><pre>
-% javac sample/duplicate/*.java
-% java sample.duplicate.Main
-</pre></ul>
-
-<p>Compare this result with that of the regular execution without reflection:
-
-<ul><pre>% java sample.duplicate.Viewer</pre></ul>
-
-<p>For more details, see
-<a type="text/plain" href="sample/duplicate/Main.java">sample/duplicate/Main.java</a>
-
-<h3>5. sample/vector/*.java</h3>
-
-<p>This example shows the use of Javassit for producing a class representing
-a vector of a given type at compile time.
-
-<p> To run, type the commands:
-<ul><pre>
-% javac sample/vector/*.java
-% java sample.preproc.Compiler sample/vector/Test.j
-% javac sample/vector/Test.java
-% java sample.vector.Test
-</pre></ul>
-
-<p>Note: <code>javassist.jar</code> is unnecessary to compile and execute
-<code>sample/vector/Test.java</code>.
-
-For more details, see
-<a type="text/plain" href="sample/vector/Test.j">sample/vector/Test.j</a>
-and <a type="text/plain" href="sample/vector/VectorAssistant.java">sample/vector/VectorAssistant.java</a>
-
-<h3>6. sample/rmi/*.java</h3>
-
-<p> This demonstrates the javassist.rmi package.
-
-<p> To run, type the commands:
-<ul><pre>
-% javac sample/rmi/*.java
-% java sample.rmi.Counter 5001
-</pre></ul>
-
-<p> The second line starts a web server listening to port 5001.
-
-<p> Then, open <a href="sample/rmi/webdemo.html">sample/rmi/webdemo.html</a>
-with a web browser running
- on the local host. (<tt>webdemo.html</tt> trys to fetch an applet from
- <tt>http://localhost:5001/</tt>, which is the web server we started above.)
-
-<p> Otherwise, run sample.rmi.CountApplet as an application:
-
-<ul><pre>
-% java javassist.web.Viewer localhost 5001 sample.rmi.CountApplet
-</pre></ul>
-
-<h3>7. sample/evolve/*.java</h3>
-
-<p> This is a demonstration of the class evolution mechanism implemented
- with Javassist. This mechanism enables a Java program to reload an
- existing class file under some restriction.
-
-<p> To run, type the commands:
-<ul><pre>
-% javac sample/evolve/*.java
-% java sample.evolve.DemoLoader 5003
-</pre></ul>
-
-<p> The second line starts a class loader DemoLoader, which runs a web
- server DemoServer listening to port 5003.
-
-<p> Then, open <a href="http://localhost:5003/demo.html">http://localhost:5003/demo.html</a> with a web browser running
- on the local host.
-(Or, see <a href="sample/evolve/start.html">sample/evolve/start.html</a>.)
-
-<h3>8. sample/hotswap/*.java</h3>
-
-<p>This shows dynamic class reloading by the JPDA. It needs JDK 1.4 or later.
-To run, first type the following commands:
-
-<ul><pre>
-% cd sample/hotswap
-% javac *.java
-% cd logging
-% javac *.java
-% cd ..
-</pre></ul>
-
-<p>If your Java is 1.4, then type:
-
-<ul><pre>
-% java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 Test
-</pre></ul>
-
-<p>If you are using Java 5, then type:
-
-<ul><pre>
-% java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 Test
-</pre></ul>
-
-<p>Note that the class path must include <code>JAVA_HOME/lib/tools.jar</code>.
-
-<h2>Hints</h2>
-
-<p>To know the version number, type this command:
-
-<ul><pre>
-% java -jar javassist.jar
-</pre></ul>
-
-<p>Javassist provides a class file viewer for debugging. For more details,
-see javassist.Dump.
-
-<h2>Release</h2>
-
-<p></p>When you want to upload a new release to Sonatype, do the following steps:</p>
-<ul>
-<li>1. Switch to jdk11 in bash shell</li>
-<li>2. pull latest from git master branch</li>
-<li>3. <code>mvn -P centralRelease javadoc:jar deploy</code></li>
-<li>4. close and release via <a href="https://oss.sonatype.org/index.html#stagingRepositories">https://oss.sonatype.org/index.html#stagingRepositories</a></li>
-</ul>
-
-<p><br/></p>
-
-<h2>Changes</h2>
-
-<p>-version 3.29 on May 13, 2022
-<ul>
- <li>GitHub Issue #378, PR #278, #299, #382, #383, #390, #391, #395, #399, #409.
-</li>
-
-<p>-version 3.28 on May 8, 2021
-<ul>
- <li>GitHub Issue #305, #328, #339, #350, #357, and PR #363.
-</ul>
-
-<p>-version 3.27 on March 19, 2020
-<ul>
- <li>GitHub Issue #271 (PR #279), #280 (PR #281), #282, and PR #294.
-</ul>
-
-<p>-version 3.26 on October 3, 2019
-<ul>
- <li>GitHub Issue #270 (PR #272), #265 (PR #267), #271, #222, and #275.
-</ul>
-
-<p>-version 3.25 on April 16, 2019
-<ul>
- <li>GitHub Issue #72 (PR #231), #241, #242 (PR #243), PR #244,
- #246 (PR #247), PR #250, #252 (PR #253), PR #254.
-</ul>
-
-<p>-version 3.24.1 on December 9, 2018
-<ul>
- <li>GitHub Issue #228, #229</li>
-</ul>
-</p>
-
-<p>-version 3.24 on November 1, 2018
-<ul>
- <li>Java 11 supports.</li>
- <li>JIRA JASSIST-267.</li>
- <li>Github PR #218.</li>
-</ul>
-</p>
-
-<p>-version 3.23.1 on July 2, 2018
-<ul>
- <li>Github PR #171.</li>
-</ul>
-</p>
-
-<p>-version 3.23 on June 21, 2018
-
-<ul>
- <li>Fix leaking file handlers in ClassPool and removed ClassPath.close(). Github issue #165.
-</ul>
-</p>
-
-<p>-version 3.22 on October 10, 2017
-
-<ul>
-<li>Java 9 supports.
-<li>JIRA JASSIST-261.
-</ul>
-</p>
-
-<p>-version 3.21 on October 4, 2016
-<ul>
-<li>JIRA JASSIST-244, 245, 248, 250, 255, 256, 259, 262.
-<li><code>javassist.tools.Callback</code> was modified to be Java 1.4 compatible.
-The parameter type of <code>Callback#result()</code> was changed.
-<li>The algorithm for generating a stack-map table was modified to fix github issue #83.
-<li>A bug of ProxyFactory related to default methods was fixed. It is github issue #45.
-</ul>
-</p>
-
-<p>-version 3.20 on June 25, 2015
-<ul>
-<li>JIRA JASSIST-241, 242, 246.
-</ul>
-</p>
-
-
-<p>-version 3.19 on January 6, 2015
-<ul>
-<li>JIRA JASSIST-158, 205, 206, 207, 208, 209, 211, 212, 216, 220, 223, 224,
- 227, 230, 234, 235, 236, 237, 238, 240.
-</ul>
-</p>
-
-<p>-version 3.18 on June 3, 2013
-<ul>
-<li>The source code repository has been moved to <a href="https://github.com/jboss-javassist/javassist">GitHub</a></li>.
-
-<li>JIRA JASSIST-181, 183, 184, 189, 162, 185, 186, 188, 190, 195, 199, 201.
-</ul>
-
-<p>-version 3.17.1 on December 3, 2012
-<ul>
- <li>JIRA JASSIST-177, 178, 182.
-</ul>
-
-
-<p>-version 3.17 on November 8, 2012
-<ul>
- <li>OSGi bundle info is now included in the jar file.
- <li>A stackmap generator has been rewritten.
- <li>JIRA JASSIST-160, 163, 166, 168, 170, 171, 174, 175, 176 have been fixed.
-</ul>
-
-<p>-version 3.16.1 on March 6, 2012
-<ul>
- <li>Maven now works. JIRA JASSIST-44, 106, 156 have been fixed.
-</ul>
-
-<p>-version 3.16 on February 19, 2012
-<ul>
- <li>JIRA JASSIST-126, 127, 144, 145, 146, 147, 149, 150, 151, 152, 153, 155.
- <li><code>javassist.bytecode.analysis.ControlFlow</code> was added.
- <li>Java 7 compatibility.
-</ul>
-
-<p>-version 3.15 on July 8, 2011
-<ul>
- <li>The license was changed to MPL/LGPL/Apache triple.
- <li>JIRA JASSIST-138 and 142 were fixed.
-</ul>
-
-<p>-version 3.14 on October 5, 2010
-
-<ul>
- <li>JIRA JASSIST-121, 123, 128, 129, 130, 131, 132.
-</ul>
-
-<p>-version 3.13 on July 19, 2010
-
-<ul>
- <li>JIRA JASSIST-118, 119, 122, 124, 125.
-</ul>
-
-<p>-version 3.12.1 on June 10, 2010
-
-<p>-version 3.12 on April 16, 2010
-
-<p>-version 3.11 on July 3, 2009
-<ul>
- <li>JIRA JASSIST-67, 68, 74, 75, 76, 77, 81, 83, 84, 85, 86, 87 were fixed.
- <li>Now javassist.bytecode.CodeIterator can insert a gap into
- a large method body more than 32KB. (JIRA JASSIST-79, 80)
-</ul>
-
-<p>-version 3.10 on March 5, 2009
-
-<ul>
- <li>JIRA JASSIST-69, 70, 71 were fixed.
-</ul>
-
-<p>-version 3.9 on October 9, 2008
-<ul>
- <li>ClassPool.makeClassIfNew(InputStream) was implemented.
- <li>CtNewMethod.wrapped(..) and CtNewConstructor.wrapped(..)
- implicitly append a method like _added_m$0.
- This method now has a synthetic attribute.
- <li>JIRA JASSIST-66 has been fixed.
-</ul>
-
-<p>-version 3.8.1 on July 17, 2008
-<ul>
- <li>CtClass.rebuildClassFile() has been added.
- <li>A few bugs of javassist.bytecode.analysis have been fixed.
- 3.8.0 could not correctly deal with one letter class name
- such as I and J.
-</ul>
-
-<p>-version 3.8.0 on June 13, 2008
-<ul>
- <li>javassist.bytecode.analysis was implemented.
- <li>JASSIST-45, 47, 51, 54-57, 60, 62 were fixed.
-</ul>
-
-<p>-version 3.7.1 on March 10, 2008
-<ul>
- <li>a bug of javassist.util.proxy has been fixed.
-</ul>
-
-<p>-version 3.7 on January 20, 2008
-<ul>
- <li>Several minor bugs have been fixed.
-</ul>
-
-<p>-version 3.6.0 on September 13, 2007
-
-<p>-version 3.6.0.CR1 on July 27, 2007
-
-<ul>
- <li>The stack map table introduced since Java 6 has been supported.
- <li>CtClass#getDeclaredBehaviors() now returns a class initializer
- as well as methods and constructors.
- <li>The default status of automatic pruning was made off.
- Instead of pruning, this version of Javassist compresses
- the data structure of a class file after toBytecode() is called.
- The compressed class file is automatically decompressed when needed.
- This saves memory space better than pruning.
- <li><a href="http://jira.jboss.com/jira/browse/JASSIST-33">JIRA JASSIST-33</a> has been fixed.
-</ul>
-
-<p>-version 3.5 on April 29, 2007
-<ul>
- <li>Various minor updates.
-</ul>
-
-<p>-version 3.4 on November 17, 2006
-<ul>
- <li>A bug in CodeConverter#replaceFieldRead() and CodeConverter#replaceFieldWrite()
- was fixed. <a href="http://jira.jboss.com/jira/browse/JBAOP-284">JBAOP-284</a>.
-
- <li>A synchronization bug and a performance bug in <code>javassist.util.proxy</code>
- have been fixed
- (<a href="http://jira.jboss.com/jira/browse/JASSIST-28">JASSIST-28</a>).
- Now generated proxy classes are cached. To turn the caching off,
- set <code>ProxyFactory.useCache</code> to <code>false</code>.
-</ul>
-
-<p>-version 3.3 on August 17, 2006
-<ul>
- <li>CtClass#toClass() and ClassPool#toClass() were modified to accept a
- <code>ProtectionDomain</code>
- (<a href="http://jira.jboss.com/jira/browse/JASSIST-23">JASSIST-23</a>).
- Now ClassPool#toClass(CtClass, ClassLoader) should not be overridden. All
- subclasses of ClassPool must override toClass(CtClass, ClassLoader,
- ProtectionDomain).
-
- <li>CtClass#getAvailableAnnotations() etc. have been implemented.
-
- <li>A bug related to a way of dealing with a bridge method was fixed
- (<a href="http://jira.jboss.com/jira/browse/HIBERNATE-37">HIBERNATE-37</a>).
-
- <li>javassist.scopedpool package was added.
-</ul>
-
-<p>-version 3.2 on June 21, 2006
-
-<ul>
- <li>The behavior of CtBehavior#getParameterAnnotations() has been changed.
- It is now compatible to Java Reflection API
- (<a href="http://jira.jboss.com/jira/browse/JASSIST-19">JASSIST-19</a>).
-</ul>
-
-<p>- version 3.2.0.CR2 on May 9, 2006
-<ul>
- <li>A bug of replace(String,ExprEditor) in javassist.expr.Expr has been fixed.
- <li>Updated ProxyFactory getClassLoader to choose the javassit class loader
- when the proxy superclass has a null class loader (a jdk/endorsed class)
- (<a href='http://jira.jboss.com/jira/browse/JASSIST-18'>JASSIST-18</a>).
- <li>Updated the throws clause of the javassist.util.proxy.MethodHandler
- to be Throwable rather than Exception
- (<a href='http://jira.jboss.com/jira/browse/JASSIST-16'>JASSIST-16</a>).
-</ul>
-
-<p>- version 3.2.0.CR1 on March 18, 2006
-<ul>
- <li>Annotations enhancements to javassist.bytecode.MethodInfo.
- <li>Allow a ClassPool to override the "guess" at the classloader to use.
-</ul>
-
-<p>- version 3.1 on February 23, 2006
-
-<ul>
- <li>getFields(), getMethods(), and getConstructors() in CtClass
- were changed to return non-private memebers instead of only
- public members.
- <li>getEnclosingClass() in javassist.CtClass was renamed
- to getEnclosingMethod().
- <li>getModifiers() was extended to return Modifier.STATIC if the class
- is a static inner class.
- <li>The return type of CtClass.stopPruning() was changed from void
- to boolean.
- <li>toMethod() in javassist.CtConstructor has been implemented.
- <li>It includes new javassist.util.proxy package
- similar to Enhancer of CGLIB.
- <p>
- <li>The subpackages of Javassist were restructured.
- <ul>
- <li>javassist.tool package was renamed to javassist.tools.
- <li>HotSwapper was moved to javassist.util.
- <li>Several subpackages were moved to javassist.tools.
- <li>javassist.preproc package was elminated and the source was
- moved to the sample directory.
- </ul>
-</ul>
-
-<p>- version 3.1 RC2 on September 7, 2005
-
-<ul>
- <li>RC2 is released mainly for an administrative reason.
- <li>A few bugs have been fixed.
-</ul>
-
-<p>- version 3.1 RC1 on August 29, 2005
-
-<ul>
- <li>Better annotation supports. See <code>CtClass.getAnnotations()</code>
- <li>javassist.tool.HotSwapper was added.
- <li>javassist.ClassPool.importPackage() was added.
- <li>The compiler now accepts array initializers
- (only one dimensional arrays).
- <li>javassist.Dump was moved to javassist.tool.Dump.
- <li>Many bugs were fixed.
-</ul>
-
-<p>- version 3.0 on January 18, 2005
-
-<ul>
- <li>The compiler now supports synchronized statements and finally
- clauses.
- <li>You can now remove a method and a field.
-</ul>
-
-<p>- version 3.0 RC1 on September 13, 2004.
-
-<ul>
- <li>CtClass.toClass() has been reimplemented. The behavior has been
- changed.
- <li>javassist.expr.NewArray has been implemented. It enables modifying
- an expression for array creation.
- <li><code>.class</code> notation has been supported. The modified class
- file needs javassist.runtime.DotClass at runtime.
- <li>a bug in <code>CtClass.getMethods()</code> has been fixed.
- <li>The compiler supports a switch statement.
-</ul>
-
-<p>- version 3.0 beta on May 18th, 2004.
-
-<ul>
- <li>The ClassPool framework has been redesigned.
- <ul>
- <li>writeFile(), write(), ... in ClassPool have been moved to CtClass.
- <li>The design of javassist.Translator has been changed.
- </ul>
-
- <li>javassist.bytecode.annotation has been added for meta tags.
- <li>CtClass.makeNestedClass() has been added.
- <li>The methods declared in javassist.bytecode.InnerClassesAttribute
- have been renamed a bit.
- <li>Now local variables were made available in the source text passed to
- CtBehavior.insertBefore(), MethodCall.replace(), etc.
- <li>CtClass.main(), which prints the version number, has been added.
- <li>ClassPool.SimpleLoader has been public.
- <li>javassist.bytecode.DeprecatedAttribute has been added.
- <li>javassist.bytecode.LocalVariableAttribute has been added.
- <li>CtClass.getURL() and javassist.ClassPath.find() has been added.
- <li>CtBehavior.insertAt() has been added.
- <li>CtClass.detach() has been added.
- <li>CodeAttribute.computeMaxStack() has been added.
-</ul>
-
-<p>- version 2.6 in August, 2003.
-
-<ul>
- <li>The behavior of CtClass.setSuperclass() was changed.
- To obtain the previous behavior, call CtClass.replaceClassName().
- <li>CtConstructor.setBody() now works for class initializers.
- <li>CtNewMethod.delegator() now works for static methods.
- <li>javassist.expr.Expr.indexOfBytecode() has been added.
- <li>javassist.Loader has been modified so that getPackage() returns
- a package object.
- <li>Now, the compiler can correctly compile a try statement and an
- infinite while-loop.
-</ul>
-
-<p>- version 2.5.1 in May, 2003.
-<br>Simple changes for integration with JBoss AOP
-<ul>
- <li>Made ClassPool.get0 protected so that subclasses of ClassPool can call it.
- <li>Moved all access to the class cache (the field ClassPool.classes) to a method called getCached(String classname). This is so subclasses of ClassPool can override this behavior.
-</ul>
-
-<p>- version 2.5 in May, 2003.
-<br>From this version, Javassist is part of the JBoss project.
-<ul>
- <li>The license was changed from MPL to MPL/LGPL dual.
- <li>ClassPool.removeClassPath() and ClassPath.close() have been added.
- <li>ClassPool.makeClass(InputStream) has been added.
- <li>CtClass.makeClassInitializer() has been added.
- <li>javassist.expr.Expr has been changed to a public class.
- <li>javassist.expr.Handler has been added.
- <li>javassist.expr.MethodCall.isSuper() has been added.
- <li>CtMethod.isEmpty() and CtConstructor.isEmpty() have been added.
- <li>LoaderClassPath has been implemented.
-</ul>
-
-<p>- version 2.4 in February, 2003.
-<ul>
- <li>The compiler included in Javassist did not correctly work with
- interface methods. This bug was fixed.
- <li>Now javassist.bytecode.Bytecode allows more than 255 local
- variables in the same method.
- <li>javassist.expr.Instanceof and Cast have been added.
- <li>javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.where()
- have been added. They return the caller-side method surrounding the
- expression.
- <li>javassist.expr.{MethodCall,NewExpr,FieldAccess,Instanceof,Cast}.mayThrow()
- have been added.
- <li>$class has been introduced.
- <li>The parameters to replaceFieldRead(), replaceFieldWrite(),
- and redirectFieldAccess() in javassist.CodeConverter are changed.
- <li>The compiler could not correctly handle a try-catch statement.
- This bug has been fixed.
-</ul>
-
-<p>- version 2.3 in December, 2002.
-<ul>
- <li>The tutorial has been revised a bit.
- <li>SerialVersionUID class was donated by Bob Lee. Thanks.
- <li>CtMethod.setBody() and CtConstructor.setBody() have been added.
- <li>javassist.reflect.ClassMetaobject.useContextClassLoader has been added.
- If true, the reflection package does not use Class.forName() but uses
- a context class loader specified by the user.
- <li>$sig and $type are now available.
- <li>Bugs in Bytecode.write() and read() have been fixed.
-</ul>
-
-<p>- version 2.2 in October, 2002.
-<ul>
- <li>The tutorial has been revised.
- <li>A new package <code>javassist.expr</code> has been added.
- This is replacement of classic <code>CodeConverter</code>.
- <li>javassist.ConstParameter was changed into
- javassist.CtMethod.ConstParameter.
- <li>javassist.FieldInitializer was renamed into
- javassist.CtField.Initializer.
- <li>A bug in javassist.bytecode.Bytecode.addInvokeinterface() has been
- fixed.
- <li>In javassist.bytecode.Bytecode, addGetfield(), addGetstatic(),
- addInvokespecial(), addInvokestatic(), addInvokevirtual(),
- and addInvokeinterface()
- have been modified to update the current statck depth.
-</ul>
-
-<p>- version 2.1 in July, 2002.
-<ul>
- <li>javassist.CtMember and javassist.CtBehavior have been added.
- <li>javassist.CtClass.toBytecode() has been added.
- <li>javassist.CtClass.toClass() and javassist.ClassPool.writeAsClass()
- has been added.
- <li>javassist.ByteArrayClassPath has been added.
- <li>javassist.bytecode.Mnemonic has been added.
- <li>Several bugs have been fixed.
-</ul>
-
-<p>- version 2.0 (major update) in November, 2001.
-<ul>
- <li>The javassist.bytecode package has been provided. It is a
- lower-level API for directly modifying a class file although
- the users must have detailed knowledge of the Java bytecode.
-
- <li>The mechanism for creating CtClass objects have been changed.
-
- <li>javassist.tool.Dump moves to the javassist package.
-</ul>
-
-<p>version 1.0 in July, 2001.
-<ul>
- <li>javassist.reflect.Metaobject and ClassMetaobject was changed.
- Now they throw the same exception that they receive from a
- base-level object.
-</ul>
-
-<p>- version 0.8
-<ul>
- <li>javassist.tool.Dump was added. It is a class file viewer.
-
- <li>javassist.FiledInitializer.byNewArray() was added. It is for
- initializing a field with an array object.
-
- <li>javassist.CodeConverter.redirectMethodCall() was added.
-
- <li>javassist.Run was added.
-</ul>
-
-<p>- version 0.7
-<ul>
- <li>javassit.Loader was largely modified. javassist.UserLoader was
- deleted. Instead, Codebase was renamed to ClassPath
- and UserClassPath was added. Now programmers who want to
- customize Loader must write a class implementing UserClassPath
- instead of UserLoader. This change is for sharing class search paths
- between Loader and CtClass.CtClass(String).
-
- <li>CtClass.addField(), addMethod(), addConstructor(), addWrapper() were
- also largely modified so that it receives CtNewMethod, CtNewConstructor,
- or CtNewField. The static methods for creating these objects were
- added to the API.
-
- <li>Constructors are now represented by CtConstructor objects.
- CtConstructor is a subclass of CtMethod.
-
- <li>CtClass.getUserAttribute() was removed. Use CtClass.getAttribute().
-
- <li>javassist.rmi.RmiLoader was added.
-
- <li>javassist.reflect.Metalevel._setMetaobject() was added. Now
- metaobjects can be replaced at runtime.
-</ul>
-
-<p>- version 0.6
-<ul>
- <li>Javassist was modified to correctly deal with array types appearing
- in signatures.
-
- <li>A bug crashed resulting bytecode if a class includes a private static
- filed. It has been fixed.
-
- <li>javassist.CtNewInterface was added.
-
- <li>javassist.Loader.recordClass() was renamed into makeClass().
-
- <li>javassist.UserLoader.loadClass() was changed to take the second
- parameter.
-</ul>
-
-<p>- version 0.5
-<ul>
- <li>a bug-fix version.
-</ul>
-
-<p>- version 0.4
-<ul>
- <li>Major update again. Many classes and methods were changed.
- Most of methods taking java.lang.Class have been changed to
- take javassist.CtClass.
-</ul>
-
-<p>- version 0.3
-<ul>
- <li>Major update. Many classes and methods were changed.
-</ul>
-
-<p>- version 0.2
-<ul>
- <li>Jar/zip files are supported.
-</ul>
-
-<p>-version 0.1 on April 16, 1999.
-<ul>
- <li>The first release.
-</ul>
-
-<p><br>
-
-<a name="copyright">
-<h2>Copyright notices</h2>
-
-<p>Javassist, a Java-bytecode translator toolkit.
-<br>Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
-
-<p>The contents of this software, Javassist, are subject to
-the Mozilla Public License Version 1.1 (the "License");<br>
-you may not use this software except in compliance
-with the License. You may obtain a copy of the License at
-<br>http://www.mozilla.org/MPL/
-
-<p>Software distributed under the License is distributed on an "AS IS"
-basis, WITHOUT WARRANTY OF <br>ANY KIND, either express or implied.
-See the License for the specific language governing rights and
-<br>limitations under the License.
-
-<p>The Original Code is Javassist.
-
-<p>The Initial Developer of the Original Code is Shigeru Chiba.
-Portions created by the Initial Developer are<br>
-Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
-<p>Contributor(s): __Bill Burke, Jason T. Greene______________.
-
-<p>Alternatively, the contents of this software may be used under the
-terms of the GNU Lesser General Public License Version 2.1 or later
-(the "LGPL"), or the Apache License Version 2.0 (the "AL"),
-in which case the provisions of the LGPL or the AL are applicable
-instead of those above. If you wish to allow use of your version of
-this software only under the terms of either the LGPL or the AL, and not to allow others to
-use your version of this software under the terms of the MPL, indicate
-your decision by deleting the provisions above and replace them with
-the notice and other provisions required by the LGPL or the AL. If you do not
-delete the provisions above, a recipient may use your version of this
-software under the terms of any one of the MPL, the LGPL or the AL.
-
-<p>If you obtain this software as part of JBoss, the contents of this
-software may be used under only the terms of the LGPL. To use them
-under the MPL, you must obtain a separate package including only
-Javassist but not the other part of JBoss.
-
-<p>All the contributors to the original source tree have agreed to
-the original license term described above.
-
-<p><br>
-
-<h2>Acknowledgments</h2>
-
-<p>The development of this software is sponsored in part by the PRESTO
-and CREST programs of <a href="http://www.jst.go.jp/">Japan
-Science and Technology Corporation</a>.
-
-<p>I'd like to thank Michiaki Tatsubori, Johan Cloetens,
-Philip Tomlinson, Alex Villazon, Pascal Rapicault, Dan HE, Eric Tanter,
-Michael Haupt, Toshiyuki Sasaki, Renaud Pawlak, Luc Bourlier,
-Eric Bui, Lewis Stiller, Susumu Yamazaki, Rodrigo Teruo Tomita,
-Marc Segura-Devillechaise, Jan Baudisch, Julien Blass, Yoshiki Sato,
-Fabian Crabus, Bo Norregaard Jorgensen, Bob Lee, Bill Burke,
-Remy Sanlaville, Muga Nishizawa, Alexey Loubyansky, Saori Oki,
-Andreas Salathe, Dante Torres estrada, S. Pam, Nuno Santos,
-Denis Taye, Colin Sampaleanu, Robert Bialek, Asato Shimotaki,
-Howard Lewis Ship, Richard Jones, Marjan Sterjev,
-Bruce McDonald, Mark Brennan, Vlad Skarzhevskyy,
-Brett Randall, Tsuyoshi Murakami, Nathan Meyers, Yoshiyuki Usui
-Yutaka Sunaga, Arjan van der Meer, Bruce Eckel, Guillaume Pothier,
-Kumar Matcha, Andreas Salathe, Renat Zubairov, Armin Haaf,
-Emmanuel Bernard, Jason T. Greene
-and all other contributors for their contributions.
-
-<p><br>
-
-<hr>
-<a href="http://www.javassist.org">Shigeru Chiba</a>
-
-</body>
-</html>