/*
 * Written by Doug Lea with assistance from members of JCP JSR-166
 * Expert Group and released to the public domain, as explained at
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

/**
 * Package contains classes that from JSR166.
 *
 * The files were imported from the following repositories:
 *  - http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/
 *  - http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jdk7/
 *
 * To keep the imported files up-to-date each of them (except ConcurrentLinkedHashMap) contains a reference to
 * a corresponding CVS commit.
 *
 * For more information please refer to the community page:
 * http://gee.cs.oswego.edu/dl/concurrency-interest/
 */

package org.jsr166;
