The code in this directory comes from the JSR 166
reference implementation.  The RI consists of a public
domain part and a part that is copyright Sun.  We remove
the copyrighted code prior to import so as not to taint
our source repository.

To do a new import:

* Download the RI from the source repository.
  http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/java
  I clicked on the "download tarball" link.

* Unpack the tarball in a fresh directory.
  mkdir tmp; cd tmp; tar zxvvf .../java.tar.gz

* Clean up the results.
  .../classpath/scripts/sanitize-jsr166

* Import these using 'cvs import' into the appropriate subdirectory.
  The vendor branch name is 'JSR166'.

* Merge the vendor branch onto the branch you're using (currently
  the generics branch, but eventually it will be the trunk).

* Build the result.

* When it works, check it in.

In general we try to avoid divergence from upstream as much
as possible.  You may need to write new classes or methods in
order for the build to succeed.
