Required software:
    Jakarta Commons CLI (1.0)
        (commons-cli.jar) [http://jakarta.apache.org/commons/cli/]
    Jakarta Commons Lang (2.2)
        (commons-lang.jar) [http://jakarta.apache.org/commons/lang/]
    Jakarta Commons Pool (1.2)
        (commons-pool.jar) [http://jakarta.apache.org/commons/pool/]
    Soot: a Java Optimization Framework (2.1.0)
        (sootclasses.jar) [http://www.sable.mcgill.ca/soot/]
		(jasminclasses.jar) [http://www.sable.mcgill.ca/soot/]
        - Polyglot 1.1.0
          	(polyglot.jar) [http://www.cs.cornell.edu/Projects/polyglot/]
    xmlenc (0.52)
        (xmlenc.jar) [http://xmlenc.sourceforge.net/]
    XMLUnit (1.0)
        (xmlunit.jar) [http://xmlunit.sourceforge.net/]
    JUnit (3.8.1)
    	(junit.jar) [http://junit.org]
    GNU Trove (1.1b4)
    	(trove.jar) [http://trove4j.sourceforge.net/]
    Simple Logging Facade For Java (1.0.1)
    	[http://http://www.slf4j.org/]
    	- As a substitute, you can use nlog4j [http://www.slf4j.org/nlog4j/] (v1.2.25)
	Bandera [OPTIONAL]
		(banderaCommons.jar, banderaToolFramework.jar) [http://bandera.projects.cis.ksu.edu]

Version 0.8.3.14
---------------------
	- AliasBasedUseDefInfo was only sound upto the available OFA information, i.e. when the intersection of alias sets 
	for the primaries of array/field refs (considered for use-def relation) is empty, the analysis concludes no use-def 
	relation.  While this can be correct upto the information from OFA, it can lead to unsound result in general.  To be 
	sound, use-def relation is induced in such cases.
	
Version 0.8.3.11
----------------
	- No method was being included at a call site when the object binding information was empty 
	for the receiver.  In such cases, (conservatively) the statically visible and concrete method 
	at the call is considered as being invoked.

Version 0.8.3.6
-------------------
	- changes in version of required libraries

Version 0.8.1
----------------
	- NPE in DivergenceDA was fixed.  Thanks to Suzette Person.

Version 0.8
--------------
	- New optimizations to flow analysis cuts down the execution time by close to 80% in some cases.  This enables the
	framework to scale on system that rely on Java AWT and Swing libraries.
	- A new flow analysis mode (along the lines of Rapid Type Analysis) enables memory optimal object flow information 
	calculation for purposes such as call graph construction.	
	- Feature request:
		- 747 - Enhance OFA info display on the command line interface
		- 717 - used scoping framework to perform scoped analyses
		- 676 - Java 5 adoption
		- 701 - refactorings.
	- Bug report:
		- 768 - Context-sensitive slicing seems to be overly perssimistic
	- Removed dependence on commons-collections and commons-pool.

Version 0.7.2.1
-------------------
	- IDependencyAnalysis.Direction.DIRECTIONLESS was deleted.

Version 0.7.2
-----------------
	- bug fixes: 618, 675, 680, 694, 696, 742.
	- feature request 717.
	- removed dependence on commons-pool.jar.


Version 0.7.1
-----------------
	- Java 5 compatible class files.  JDK 1.5 and above is required.

Version 0.7
---------------
	- Implemented fieldAccessShared in EscapeInfo to specifically answer read-write and write-write based shared access.
	- Used write-write shared access based info in SharedWriteEquivalence analysis.
	- Added preliminary support to do fast, scoped,  (yet unsound) flow analysis.  [EXPERIMENTAL]
	- moved AnalysesController from staticanalyses.impl package to staticanalyses.processing package.
	- added an intraprocedural reachability method to CFGAnalysis and used it in AliasedUseDefInfo.
	- refactored concurrency.atomicity package to concurrency.independence
	- renamed AtomicXXXX classes as IndependentXXXX.
	- Bug fixes in DataAliasBasedCallingContextRetriever.
	- Incorrect escape information for static fields due to recent refactorings was fixed.
	- Improved precision of escape information pertaining to static fields.
	- Improved precision of atomicity information as well.

Version 0.6.4
-----------------
	- Improved the precision of statement-level atomicity information.
	- Enabled field-specific shared access query in EscapeInfo.
	- Bug fixes in escape analysis.
	- Minor improvement in Interference dependences.

Version 0.6.3
-----------------
	- Modified ThreadEscapeInfoBasedCallingContextRetriever to use sharing information as opposed to escape info.
	- Major refactoring in concurrency.escape package.

Version 0.6.2
----------------
	- Refactored EquivalenceClassBasedEscapeAnalysis.  This changes how escape/read-write info is accessed.
	- A bug fix in read-write information.
	- Modified SDG to capture inter-procedural data flow via arguments and return values.

Version 0.6.1
-----------------
	- Fixed a bug in DataAliasBasedCallingContextRetriever.  (This is was identified by Aysu Betin-Can).
	- Added a class to create system dependence graph (SDG).

Version 0.6
----------------
	- Control dependence can now consider the effect of interprocedural exception flow on intraprocedural control flow.
	- Interprocedural-exception-flow-sensitive exception occurrence analysis - ExceptionRaisingAnalysis.
    - New interface to query object-level read/write information.
	- Refactored call graph calculation logic.
	- Added implementations of Class Hierarchy Analysis (CHA) based and Rapid Type Analysis (RTA) based call graph
	  construction. [API BREAKING CHANGE]
	- Added support to retrieve field reading/writing thread information from EquivalenceClassBasedEscapeAnalysis.
	- Feature request #590, #613, #614.
	- Added new program point-relative inter-thread context retriever that is sensitive to data-equivalence
		(ThreadEscapeInfoBasedCallingContextRetrieverV2)
	- Added new program point-relative intra-thread alias-based context retriever (DataAliasBasedCallingContextRetriever)


Version 0.5
------------
    - Added escape information preserving calling context retriever.
    - Added Non-termination insensitive control dependence and pure inter-procedural divergence dependence analysis.
	- Added support to dynamically update relation between types and tokens in the token management framework.
	- Incorporated SCC-based optimizations into flow analysis framework.
	- Optimized certain graph algorithms.
	- Added a side-effect analysis.
	- Added an atomicity analysis.  This supports detection of atomic regions and "independent"/atomic statements.
	- Support for tracking thread "escape" information across method boundaries.
	- Fixed bugs in Reference-based DA and OFAXMLizer.
	- Added analysis to calculate static field-based use-def info.
	- Added support to generate thread-locality based calling context.
	- Code refactoring.

Version 0.4
------------
	- Feature requests 426.
	- Class file and Sources are now v1.4 compatible.


Version 0.3
------------
	- Implemented SafeLock Analysis.
	- Refactored Synchronization dependence analysis into a simple dependence analysis and a general purpose
	  Monitor Analysis.
	- Bugfixes in Escape analysis, Interference dependence analysis, Reference Based Data Dependence analysis
	  and EquivalenceClass-based Escape Analysis.
	- Optimizations in AliasedUseDefInfov2.
	- Optimized version of Local Use Def analysis (LocalUseDefInfov2).
	- Provided a helper class to calculate indirect dependence based on direct dependence information.
	- Catered bug reports 395.
	- Deleted deprecated Driver classes along with Ruf's Escape analysis.


Version 0.2
------------
	- Memory/Performance optimizations and bug fixes in EquivalenceClassBasedEscapeAnalysis.
	- All xmlizers use classes from xmlenc library to generate xml documents.
	- Implemented Indirect and Direct Entry Control dependence.
	- Added new options to OFA and CallGraph CLI classes.
	- Added a new implementation of Use-Def Analysis for method locals.
	- Implemented Divergence dependence (edu.ksu.cis.indus.staticanalyses.dependency.DivergenceDA)
	- Implemented Exit Control dependence (edu.ksu.cis.indus.staticanalyses.dependency.ExitControlDA)


Version 0.1
------------
This is (hopefully) a stable release of version 0.1a.  One notable change is that we have decided to use Soot 2.1.0 for
Indus.  This is because there were some changes in Soot pertaining to control flow graphs which were not decided at
the time of this release.  As we do not know when these changes in Soot will stabilize we advice the users to use
Soot 2.1.0 only.

We have switched over to a new module to manage values in the flow analyses.  This module is available in Indus
module.


Version 0.1a
--------------
This is the first release of StaticAnalyses subproject of Indus.  This module provides implementation of a flow analysis
framework, object flow anlaysis, escape analysis, and a slew of dependence analyses.  Please refer to the user guide
and java docs for more information.

In this release, the following implementations do not work.
	Exit Control dependence (edu.ksu.cis.indus.staticanalyses.dependency.ExitControlDA)
	Divergence dependence (edu.ksu.cis.indus.staticanalyses.dependency.DivergenceDA)
	Safe Lock Analysis (edu.ksu.cis.indus.staticanalyses.concurence.SafeLockAnalysis)

Ruf's escape analysis will not be supported in the future, so, please refrain from using it or use it at your own risk.
Likewise, please refrain from using Driver classes as these are not intended for the users and also it is planned to delete
them by v1.0.
