Renaming /doc to /docs for use with GitHub Pages
authorVaibhav Sharma <vaibhav@umn.edu>
Tue, 16 Jan 2018 20:33:21 +0000 (14:33 -0600)
committerVaibhav Sharma <vaibhav@umn.edu>
Tue, 16 Jan 2018 20:33:21 +0000 (14:33 -0600)
178 files changed:
doc/devel/attributes.md [deleted file]
doc/devel/bytecode_factory.md [deleted file]
doc/devel/choicegenerator.md [deleted file]
doc/devel/coding_conventions.md [deleted file]
doc/devel/create_project.md [deleted file]
doc/devel/design.md [deleted file]
doc/devel/eclipse_plugin_update.md [deleted file]
doc/devel/embedded.md [deleted file]
doc/devel/index.md [deleted file]
doc/devel/jpf_tests.md [deleted file]
doc/devel/listener.md [deleted file]
doc/devel/logging.md [deleted file]
doc/devel/mercurial.md [deleted file]
doc/devel/mji.md [deleted file]
doc/devel/mji/mangling.md [deleted file]
doc/devel/modules.md [deleted file]
doc/devel/partial_order_reduction.md [deleted file]
doc/devel/report.md [deleted file]
doc/graphics/DFSListener.svg [deleted file]
doc/graphics/app-types.svg [deleted file]
doc/graphics/attributes.svg [deleted file]
doc/graphics/bc-factory.svg [deleted file]
doc/graphics/cg-impl.svg [deleted file]
doc/graphics/cg-motivation.svg [deleted file]
doc/graphics/cg-ontology.svg [deleted file]
doc/graphics/cg-sequence.svg [deleted file]
doc/graphics/choicegen-example.svg [deleted file]
doc/graphics/genpeer.svg [deleted file]
doc/graphics/interleavings.svg [deleted file]
doc/graphics/jpf-abstractions.svg [deleted file]
doc/graphics/jpf-basic.svg [deleted file]
doc/graphics/jpf-intro-new.svg [deleted file]
doc/graphics/jpf-layers.svg [deleted file]
doc/graphics/jpf-project.svg [deleted file]
doc/graphics/listener-overview.svg [deleted file]
doc/graphics/listeners.svg [deleted file]
doc/graphics/mji-call.svg [deleted file]
doc/graphics/mji-functions.svg [deleted file]
doc/graphics/mji-mangling.svg [deleted file]
doc/graphics/new-testing.svg [deleted file]
doc/graphics/por-mark.svg [deleted file]
doc/graphics/por-scheduling-relevance.svg [deleted file]
doc/graphics/properties.svg [deleted file]
doc/graphics/report.svg [deleted file]
doc/graphics/states-mc.svg [deleted file]
doc/graphics/states-testing.svg [deleted file]
doc/graphics/sw-model-checking-2.svg [deleted file]
doc/graphics/sw-model-checking.svg [deleted file]
doc/index.md [deleted file]
doc/install/build.md [deleted file]
doc/install/eclipse-jpf.md [deleted file]
doc/install/eclipse-plugin.md [deleted file]
doc/install/eclipse-plugin/update.md [deleted file]
doc/install/eclipse-plugin/update/features.md [deleted file]
doc/install/eclipse-plugin/update/plugins.md [deleted file]
doc/install/index.md [deleted file]
doc/install/netbeans-jpf.md [deleted file]
doc/install/netbeans-plugin.md [deleted file]
doc/install/repo_shell.md [deleted file]
doc/install/repositories.md [deleted file]
doc/install/requirements.md [deleted file]
doc/install/site-properties.md [deleted file]
doc/install/snapshot.md [deleted file]
doc/intro/classification.md [deleted file]
doc/intro/index.md [deleted file]
doc/intro/race_example.md [deleted file]
doc/intro/random_example.md [deleted file]
doc/intro/testing_vs_model_checking.md [deleted file]
doc/intro/what_is_jpf.md [deleted file]
doc/jpf-core/AssertionProperty.md [deleted file]
doc/jpf-core/ErrorTraceGenerator.md [deleted file]
doc/jpf-core/ExceptionInjector.md [deleted file]
doc/jpf-core/IdleFilter.md [deleted file]
doc/jpf-core/index.md [deleted file]
doc/papers/chicago-author-date.csl [deleted file]
doc/papers/index.md [deleted file]
doc/papers/references.bib [deleted file]
doc/user/api.md [deleted file]
doc/user/application_types.md [deleted file]
doc/user/components.md [deleted file]
doc/user/config.md [deleted file]
doc/user/config/random.md [deleted file]
doc/user/index.md [deleted file]
doc/user/output.md [deleted file]
doc/user/run.md [deleted file]
doc/user/run_eclipse.md [deleted file]
doc/user/run_eclipse_plugin.md [deleted file]
doc/user/run_nb.md [deleted file]
doc/user/run_nb_plugin.md [deleted file]
docs/devel/attributes.md [new file with mode: 0644]
docs/devel/bytecode_factory.md [new file with mode: 0644]
docs/devel/choicegenerator.md [new file with mode: 0644]
docs/devel/coding_conventions.md [new file with mode: 0644]
docs/devel/create_project.md [new file with mode: 0644]
docs/devel/design.md [new file with mode: 0644]
docs/devel/eclipse_plugin_update.md [new file with mode: 0644]
docs/devel/embedded.md [new file with mode: 0644]
docs/devel/index.md [new file with mode: 0644]
docs/devel/jpf_tests.md [new file with mode: 0644]
docs/devel/listener.md [new file with mode: 0644]
docs/devel/logging.md [new file with mode: 0644]
docs/devel/mercurial.md [new file with mode: 0644]
docs/devel/mji.md [new file with mode: 0644]
docs/devel/mji/mangling.md [new file with mode: 0644]
docs/devel/modules.md [new file with mode: 0644]
docs/devel/partial_order_reduction.md [new file with mode: 0644]
docs/devel/report.md [new file with mode: 0644]
docs/graphics/DFSListener.svg [new file with mode: 0644]
docs/graphics/app-types.svg [new file with mode: 0644]
docs/graphics/attributes.svg [new file with mode: 0644]
docs/graphics/bc-factory.svg [new file with mode: 0644]
docs/graphics/cg-impl.svg [new file with mode: 0644]
docs/graphics/cg-motivation.svg [new file with mode: 0644]
docs/graphics/cg-ontology.svg [new file with mode: 0644]
docs/graphics/cg-sequence.svg [new file with mode: 0644]
docs/graphics/choicegen-example.svg [new file with mode: 0644]
docs/graphics/genpeer.svg [new file with mode: 0644]
docs/graphics/interleavings.svg [new file with mode: 0644]
docs/graphics/jpf-abstractions.svg [new file with mode: 0644]
docs/graphics/jpf-basic.svg [new file with mode: 0644]
docs/graphics/jpf-intro-new.svg [new file with mode: 0644]
docs/graphics/jpf-layers.svg [new file with mode: 0644]
docs/graphics/jpf-project.svg [new file with mode: 0644]
docs/graphics/listener-overview.svg [new file with mode: 0644]
docs/graphics/listeners.svg [new file with mode: 0644]
docs/graphics/mji-call.svg [new file with mode: 0644]
docs/graphics/mji-functions.svg [new file with mode: 0644]
docs/graphics/mji-mangling.svg [new file with mode: 0644]
docs/graphics/new-testing.svg [new file with mode: 0644]
docs/graphics/por-mark.svg [new file with mode: 0644]
docs/graphics/por-scheduling-relevance.svg [new file with mode: 0644]
docs/graphics/properties.svg [new file with mode: 0644]
docs/graphics/report.svg [new file with mode: 0644]
docs/graphics/states-mc.svg [new file with mode: 0644]
docs/graphics/states-testing.svg [new file with mode: 0644]
docs/graphics/sw-model-checking-2.svg [new file with mode: 0644]
docs/graphics/sw-model-checking.svg [new file with mode: 0644]
docs/index.md [new file with mode: 0644]
docs/install/build.md [new file with mode: 0644]
docs/install/eclipse-jpf.md [new file with mode: 0644]
docs/install/eclipse-plugin.md [new file with mode: 0644]
docs/install/eclipse-plugin/update.md [new file with mode: 0644]
docs/install/eclipse-plugin/update/features.md [new file with mode: 0644]
docs/install/eclipse-plugin/update/plugins.md [new file with mode: 0644]
docs/install/index.md [new file with mode: 0644]
docs/install/netbeans-jpf.md [new file with mode: 0644]
docs/install/netbeans-plugin.md [new file with mode: 0644]
docs/install/repo_shell.md [new file with mode: 0644]
docs/install/repositories.md [new file with mode: 0644]
docs/install/requirements.md [new file with mode: 0644]
docs/install/site-properties.md [new file with mode: 0644]
docs/install/snapshot.md [new file with mode: 0644]
docs/intro/classification.md [new file with mode: 0644]
docs/intro/index.md [new file with mode: 0644]
docs/intro/race_example.md [new file with mode: 0644]
docs/intro/random_example.md [new file with mode: 0644]
docs/intro/testing_vs_model_checking.md [new file with mode: 0644]
docs/intro/what_is_jpf.md [new file with mode: 0644]
docs/jpf-core/AssertionProperty.md [new file with mode: 0644]
docs/jpf-core/ErrorTraceGenerator.md [new file with mode: 0644]
docs/jpf-core/ExceptionInjector.md [new file with mode: 0644]
docs/jpf-core/IdleFilter.md [new file with mode: 0644]
docs/jpf-core/index.md [new file with mode: 0644]
docs/papers/chicago-author-date.csl [new file with mode: 0644]
docs/papers/index.md [new file with mode: 0644]
docs/papers/references.bib [new file with mode: 0644]
docs/user/api.md [new file with mode: 0644]
docs/user/application_types.md [new file with mode: 0644]
docs/user/components.md [new file with mode: 0644]
docs/user/config.md [new file with mode: 0644]
docs/user/config/random.md [new file with mode: 0644]
docs/user/index.md [new file with mode: 0644]
docs/user/output.md [new file with mode: 0644]
docs/user/run.md [new file with mode: 0644]
docs/user/run_eclipse.md [new file with mode: 0644]
docs/user/run_eclipse_plugin.md [new file with mode: 0644]
docs/user/run_nb.md [new file with mode: 0644]
docs/user/run_nb_plugin.md [new file with mode: 0644]

diff --git a/doc/devel/attributes.md b/doc/devel/attributes.md
deleted file mode 100644 (file)
index 69c7f83..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# The Attribute System #
-
-While JPF stores values for operands, local variables and fields very similar to a normal VM, it also features a storage extension mechanism that lets you associate arbitrary objects with stack slots (operands and locals), fields, and whole objects (ElementInfos). The attribute objects can be set/used in [native peers](mji) or [listeners](listener) to add state stored/restored information that automatically follows the data flow.
-
-Note that JPF does not restore attribute object values upon backtracking per default, only attribute references. If you need to make sure attribute values are restored, you have to use copy-on-write and then store back when accessing and modifying such attributes. 
-
-![Figure: JPF Attribute System](../graphics/attributes.svg){align=center width=650}
-
-JPF provides an API to set/access these attributes, which is located in `gov.nasa.jpf.vm.Fields` (for field attributes) and `gov.nasa.jpf.vm.StackFrame` (for local variables and operands). Once set, the VM copies the attributes each time it reads/writes the associated field or stackframe slot. 
-
-## Usage ##
-
-For example, such attributes can be used to represent symbolic values or numeric error bounds. It should be noted though that attributes impose additional runtime costs, which is also why we don't treat normal, concrete values just as a special kind of attribute (normal values are still stored separately as builtin types like `int`). The upside of this is that your attributes coexist with normal, concrete values, which for instance allows things like mixed symbolic and concrete execution.
-
-> **Note:** JPF now can associate attributes not only with fields of an object, but with the object as a whole. See the `gov.nasa.jpf.vm.ElementInfo` API for details.
-
-> **Note:** while there is an API to set/retrieve attributes based on type, there is no implementation
-yet that allows multiple attributes to be stored.
\ No newline at end of file
diff --git a/doc/devel/bytecode_factory.md b/doc/devel/bytecode_factory.md
deleted file mode 100644 (file)
index 6fb8c2c..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Bytecode Factories #
-Normally, a VM defines the semantics of it's programming language. In case of Java, the corresponding instruction set represents a multi-threaded stack machine, where values are kept on the heap, or inside of local and/or operand slots within stack frames. The effect of Java bytecode instructions with respect to heap, locals and operands are described in [Sun's Java virtual machine specifications](http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html/).
-JPF is different. The VM of JPF and its associated constructs like `ThreadInfo`, `ClassInfo`, `ElementInfo` etc. provide all the necessary means to implement a normal Java interpreter. However, JPF delegates the use of these means to the instructions. Every bytecode that gets executed by JPF is represented by a corresponding `Instruction` object, which normally gets instantiated during class load time. The `Instruction` classes of the standard execution mode can be found in package `gov.nasa.jpf.jvm.bytecode`.
-
-When it comes to executing a bytecode, the VM simply calls the `execute()` method of this `Instruction` instance. The implementation of this method defines the execution semantics.
-
-The trick is now that JPF uses a configurable [abstract factory](http://en.wikipedia.org/wiki/Abstract_factory_pattern) to choose and instantiate the `Instruction` classes. By providing your own concrete `InstructionFactory`, together with a set of related `Instruction` classes, you can change the execution semantics of Java.
-
-![Figure: Bytecode Factories](../graphics/bc-factory.svg){align=center width=850}
-
-## Usages ##
-
-Why would it be useful to change the standard semantics? One reason is to extend normal semantics with additional checks. For example, this is performed by the JPF extension jpf-numeric which overrides numeric bytecode classes with versions that check for over-/underflow and silent NaN propagation (among other things). A much more involved example is the JPF extension jpf-symbc, which implements a symbolic execution mode for Java, e.g. to automatically generate test cases based on the program structure of an application. It does so by overriding branch instructions, turning them into state space branches represented by their own [ChoiceGenerators](choicegenerator), collecting the path conditions on the way, and feeding them to an external SAT solver.
-
-## Implementation ##
-
-Since there is a large number of Java bytecode instructions, it would be tedious having to implement all 250+ Instruction classes in order to override just a couple of them. You can reduce the effort in three ways:
-
-
-### GenericInstructionFactory ###
-
-
-Using the `GenericInstructionFactory` as a base class for your `InstructionFactory`. This only requires you to specify an alternative package where your bytecode classes reside, together with the set of bytecodes that should be overridden. The resulting code can be quite short, as can be seen in the *numeric* extension example:
-
-~~~~~~~~ {.java}
-public class NumericInstructionFactory extends GenericInstructionFactory {
-  // which bytecodes do we replace
-  static final String[] BC_NAMES = {
-    "DCMPG", "DCMPL",  "DADD", "DSUB", "DMUL", "DDIV",
-    "FCMPG", "FCMPL",  "FADD", "FSUB", "FMUL", "FDIV",
-                       "IADD", "ISUB", "IMUL", "IDIV",  "IINC", 
-                       "LADD", "LSUB", "LMUL", "LDIV"   
-  };
-  
-  // where do they reside
-  protected static final String BC_PREFIX = "gov.nasa.jpf.numeric.bytecode.";
-  
-  // what classes should use them
-  protected static final String[] DEFAULT_EXCLUDES = { "java.*", "javax.*" };
-  
-  public  NumericInstructionFactory (Config conf){    
-    super(conf, BC_PREFIX, BC_NAMES, null, DEFAULT_EXCLUDES);
-    
-    NumericUtils.init(conf);
-  }
-}
-~~~~~~~~
-
-
-### Super Delegation ###
-
-You can derive your overriding bytecode classes from the ones in `gov.nasa.jpf.jvm.bytecode`. If you just want to add some checks before or after performing the "normal" operation, you can use the standard `Instruction` classes as base classes, and call `super.execute(..)` from within your derived classes. 
-
-
-### Attributes ###
-
-As your execution semantics get more complex, you probably need to store and restore additional information that is associated with variables. JPF provides an automatically managed [attribute system](attributes) for this purpose. You can attach objects to locals, operands and fields, and JPF takes care of propagating these attribute objects whenever it manipulates stackframes or heap objects.
-
-
-## Configuration ##
-
-
-Configuring your bytecode factory just requires one JPF property, e.g.
-
-~~~~~~~~ {.bash}
-vm.insn_factory.class = gov.nasa.jpf.numeric.NumericInstructionFactory
-~~~~~~~~
-
-which can be either done from the command line or from within a *.jpf property file
diff --git a/doc/devel/choicegenerator.md b/doc/devel/choicegenerator.md
deleted file mode 100644 (file)
index e8272eb..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-# ChoiceGenerators #
-
-The goal of every model checker is to check if certain properties hold in states of the system under test. The way that choices are computed is a fundamental part of model checking, since they determine which states are checked. We refer to the mechanism used by JPF to capture choices as ChoiceGenerators.
-
-ChoiceGenerators can be approached from an application perspective, or from the JPF implementation perspective. In this section, we cover both perspectives.
-
-## Motivation ##
-
-Whenever the model checker reaches non-determinism in code, it needs to compute choices. Non-determinism can be due to thread scheduling or non-deterministic data acquisitions. Here, we present an example including data non-determinism to justify our implementation approach. JPF provides support for "random" data acquisition, using the interface `gov.nasa.jpf.jvm.Verify`.
-
-~~~~~~~~ {.java}
-...
-boolean b = Verify.getBoolean(); // evaluated by JPF for both `true` and `false`
-...
-~~~~~~~~
-
-This worked nicely for small sets of choice values (such as `{true,false}` for boolean), but the mechanism for enumerating all choices from a type specific interval becomes already questionable for large intervals (e.g. `Verify.getInt(0,10000)`), and fails completely if the data type does not allow finite choice sets at all (such as floating point types):
-
-![Figure 1: Motivation behind ChoiceGenerator](../graphics/cg-motivation.svg){align=center width=750}
-
-To handle this case, we have to leave the ideal world of model checking (that considers all possible choices), and make use of what we know about the real world - we have to use heuristics to make the set of choices finite and manageable. However, heuristics are application and domain specific, and it would be a bad idea to hardcode them into the test drivers we give JPF to analyze. This leads to a number of requirements for the JPF choice mechanism:
-
-  * choice mechanisms have to be decoupled (i.e. thread choices should be independent of data choices, double choices from int choices etc.)
-  * choice sets and enumeration should be encapsulated in dedicated, type specific objects. The VM should only know about the most basic types, and otherwise use a generic interface to obtain choices
-  * selection of classes representing (domain specific) heuristics, and parametrization of ChoiceGenerator instances should be possible at runtime, i.e. via JPF's configuration mechanism (properties)
-
-The diagram shown above depicts this with an example that uses a "randomly" chosen velocity value of type double. As an example heuristic we use a threshold model, i.e. we want to know how the system reacts below, at, and above a certain application specific value (threshold). We reduce an infinite set of choices to only three "interesting" ones. Of course, "interesting" is quite subjective, and we probably want to play with the values (delta, threshold, or even used heuristic) efficiently, without having to rebuild the application each time we run JPF.
-
-The code example does not mention the used `ChoiceGenerator` class (`DoubleThresholdGenerator`) at all, it just specifies a symbolic name `"velocity"`, which JPF uses to look up an associated class name from its configuration data (initialized via property files or the command line - see Configuring JPF Runtime Options). But it doesn't stop there. Most heuristics need further parameterization (e.g. threshold, delta), and we provide that by passing the JPF configuration data into the `ChoiceGenerator` constructors (e.g. the `velocity.threshold` property). Each `ChoiceGenerator` instance knows its symbolic name (e.g. `"velocity"`), and can use this name to look up whatever parameters it needs.
-
-## The JPF Perspective ##
-
-Having such a mechanism is nice to avoid test driver modification. But it would be much nicer to consistently use the same mechanism not just for data acquisition choices, but also scheduling choices (i.e. functionality that is not controlled by the test application). JPF's ChoiceGenerator mechanism does just this, but in order to understand it from an implementation perspective we have to take one step back and look at some JPF terminology:
-
-![Figure 2: States, Transitions and Choices](../graphics/cg-ontology.svg){align=center width=650}
-
-
-*State* is a snapshot of the current execution status of the application (mostly thread and heap states), plus the execution history (path) that lead to this state. Every state has a unique id number. State is encapsulated in the `SystemState` instance (almost, there is some execution history which is just kept by the JVM object). This includes three components:
-
-  * KernelState - the application snapshot (threads, heap)
-  * trail - the last Transition (execution history)
-  * current and next ChoiceGenerator - the objects encapsulating the choice enumeration that produces different transitions (but not necessarily new states)
-
-*Transition* is the sequence of instructions that leads from one state to the next. There is no context switch within a transition, it's all in the same thread. There can be multiple transitions leading out of one state (but not necessarily to a new state).
-
-*Choice* is what starts a new transition. This can be a different thread (i.e. scheduling choice), or different "random" data value.
-
-In other words, possible existence of choices is what terminates the last transition, and selection of a choice value precludes the next transition. The first condition corresponds to creating a new `ChoiceGenerator`, and letting the `SystemState` know about it. The second condition means to query the next choice value from this `ChoiceGenerator` (either internally within the VM, or in an instruction or native method).
-
-## How it comes to Life ##
-With this terminology, we are ready to have a look at how it all works. Let's assume we are in a transition that executes a `getfield` bytecode instruction (remember, JPF executes Java bytecode), and the corresponding object that owns this field is shared between threads. For simplicity's sake, let's further assume there is no synchronization when accessing this object, (or we have turned off the property `vm.sync_detection`). Let's also assume there are other runnable threads at this point. Then we have a choice - the outcome of the execution might depend on the order in which we schedule threads, and hence access this field. There might be a data race.
-
-![Figure 3: ChoiceGenerator Sequence](../graphics/cg-sequence.svg){align=center width=550}
-
-Consequently, when JPF executes this `getfield` instruction, the `gov.nasa.jpf.jvm.bytecode.GETFIELD.execute()` method does three things:
-
-  1. create a new `ChoiceGenerator` (`ThreadChoiceGenerator` in this case), that has all runnable threads at this point as possible choices
-  2. registers this `ChoiceGenerator` via calling `SystemState.setNextChoiceGenerator()`
-  3. schedules itself for re-execution (just returns itself as the next instruction to execute within the currently running thread)
-
-At this point, JPF ends this transition (which is basically a loop inside `ThreadInfo.executeStep()`), stores a snapshot of the current State, and then starts the next transition (let's ignore the search and possible backtracks for a moment). The `ChoiceGenerator` created and registered at the end of the previous transition becomes the new current `ChoiceGenerator`. Every state has exactly one current `ChoiceGenerator` object that is associated with it, and every transition has exactly one choice value of this `ChoiceGenerator` that kicks it off. Every transition ends in an instruction that produces the next `ChoiceGenerator`.
-
-The new transition is started by the `SystemState` by setting the previously registered `ChoiceGenerator` as the current one, and calling its `ChoiceGenerator.advance()` method to position it on its next choice. Then the `SystemState` checks if the current `ChoiceGenerator` is a scheduling point (just a `ThreadChoiceGenerator` used to encapsulate threads scheduling), and if so, it gets the next thread to execute from it (i.e. the `SystemState` itself consumes the choice). Then it starts the next transition by calling `ThreadInfo.executeStep()` on it.
-
-The `ThreadInfo.executeStep()` basically loops until an Instruction.execute() returns itself, i.e. has scheduled itself for re-execution with a new `ChoiceGenerator`. When a subsequent `ThreadInfo.executeStep()` re-executes this instruction (e.g. `GETFIELD.execute()`), the instruction notices that it is the first instruction in a new transition, and hence does not have to create a `ChoiceGenerator` but proceeds with it's normal operations.
-
-If there is no next instruction, or the Search determines that the state has been seen before, the VM backtracks. The `SystemState` is restored to the old state, and checks for not-yet-explored choices of its associated ChoiceGenerator by calling `ChoiceGenerator.hasMoreChoices()`. If there are more choices, it positions the `ChoiceGenerator` on the next one by calling `ChoiceGenerator.advance()`. If all choices have been processed, the system backtracks again (until it's first `ChoiceGenerator` is done, at which point we terminate the search).
-
-![Figure 4: ChoiceGenerator Implementation](../graphics/cg-impl.svg){align=center width=850}
-
-The methods that create `ChoiceGenerators` have a particular structure, dividing their bodies into two parts:
-
-  1. *top half* - (potentially) creates and registers a new `ChoiceGenerator`. This marks the end of a transition
-  2. *bottom half* - which does the real work, and might depend on acquiring a new choice value. This is executed at the beginning of the next transition
-
-To determine which branch you are in, you can call `ThreadInfo.isFirstStepInsn()`. This will return `true` if the currently executed instruction is the first one in the transition, which corresponds to the *bottom half* mentioned above.
-
-The only difference between scheduling choices and data acquisition choices is that the first ones are handled internally by the VM (more specifically: used by the `SystemState` to determine the next thread to execute), and the data acquisition is handled in the bottom half of `Instruction.execute()`, native method, or listener callback method (in which case it has to acquire the current `ChoiceGenerator` from the `SystemState`, and then explicitly call `ChoiceGenerator.getNextChoice()` to obtain the choice value). For a real example, look at the `JPF.gov_nasa_jpf_jvm_Verify.getBoolean()` implementation.
-
-As an implementation detail, creation of scheduling points are delegated to a `Scheduler` instance, which encapsulates a scheduling policy by providing a consistent set of `ThreadChoiceGenerators` for the fixed number of instructions that are scheduling relevant (`monitor_enter`, synchronized method calls, `Object.wait()` etc.). Clients of this `Scheduler` therefore have to be aware of that the policy object might not return a new `ChoiceGenerator`, in which case the client directly proceeds with the bottom half execution, and does not break the current transition.
-
-The standard classes and interfaces for the ChoiceGenerator mechanism can be found in package `gov.nasa.jpf.vm`, and include:
-
-  * `ChoiceGenerator`
-  * `BooleanChoiceGenerator`
-  * `IntChoiceGenerator`
-  * `DoublechoiceGenerator`
-  * `ThreadChoiceGenerator`
-  * `SchedulingPoint`
-  * `SchedulerFactory`
-  * `DefaultSchedulerFactory`
-
-Concrete implementations can be found in package `gov.nasa.jpf.vm.choice`, and include classes like:
-
-  * `IntIntervalGenerator`
-  * `IntChoiceFromSet`
-  * `DoubleChoiceFromSet`
-  * `DoubleThresholdGenerator`
-  * `ThreadChoiceFromSet`
-
-As the number of useful generic heuristics increases, we expect this package to be expanded.
-
-
-## Cascaded ChoiceGenerators ##
-There can be more than one `ChoiceGenerator` object associated with a transition. Such ChoiceGenerators are referred to as *cascaded*, since they give us a set of choice combinations for such transitions. 
-
-For example, assume that we want to create a listener that perturbs certain field values, i.e. it replaces the result operand that is pushed by a `getfield` instruction. This is easy to do from a listener, but the VM (more specifically our on-the-fly [partial order reduction](partial_order_reduction)) might already create a `ThreadChoiceGenerator` (scheduling point) for this `getfield` if it refers to a shared object, and the instruction might cause a data race. Without cascaded `ChoiceGenerators` we could only have the perturbation listener **or** the race detection, but not both. This is clearly a limitation we want to overcome, since you might not even know when JPF - or some of the other [listeners](listener) or [bytecode_factories](bytecode_factory) - create `ChoiceGenerators` that would collide with the ones you want to create in your listener.
-
-Using cascaded ChoiceGenerators requires little more than what we have already seen above. It only involves changes to two steps:
-
- 1. ChoiceGenerator creation - you need to identify `ChoiceGenerators` with a `String` id. We can't use the type of the `ChoiceGenerator` - or it's associated choice type - to identify a particular instance, since different listeners might use different `ChoiceGenerator` instances of same types for different purposes. Resolving through unique types would throw us back to where we would have to know about all the other `ChoiceGenerators` created by all the other JPF components. We can't use the associated instruction either, because the whole point is that we can have more than one `ChoiceGenerator` for each of them. So we have to give our `ChoiceGenerator` instances names when we create them, as in
-~~~~~~~~ {.java}
-...
-IntChoiceFromSet cg = new IntChoiceFromSet("fieldPerturbator", 42, 43);
-~~~~~~~~
-
-The name should be reasonably unique, describing the context in which this choice is used. Don't go with "generic" names like "myChoice". In case of doubt, use the method name that creates the `ChoiceGenerator`. The reason why we need the *id* in the first place is that we later-on want to be able to retrieve a specific instance. Which brings us to:
-
- 2. ChoiceGenerator retrieval - at some point we want to process the choice (usually within the *bottom half* of the method that created the `ChoiceGenerator`), so we need to tell JPF all we know about the `ChoiceGenerator` instance, namely id and type. The simple `SystemState.getChoiceGenerator()` we used above will only give us the last registered one, which might or might not be the one we registered ourselves. Retrieval is done with a new method `SystemState.getCurrentChoiceGenerator(id,cgType)`, which in the above case would look like:
-~~~~~~~~ {.java}
-...
-IntChoiceFromSet cg = systemState.getCurrentChoiceGenerator("fieldPerturbator", IntChoiceFromSet.class);
-assert cg != null : "required IntChoiceGenerator not found";
-...
-~~~~~~~~
-
-This method returns `null` if there is no `ChoiceGenerator` of the specified id and type associated with the currently executed instruction. If this is the bottom half of a method that created the instance, this is most likely an error condition that should be checked with an assertion. If the retrieval is in another method, existence of such a `ChoiceGenerator` instance could be optional and you therefore have it checked in an `if (cg != null) {..}' expression.
-
-This is all there is to it in case you don't refer to a particular execution state of an instruction. As an example, assume that you want to add some int choices on top of each `Verify.getInt(..)` call. Your listener would look like this:
-
-~~~~~~~~ {.java}
-  @Override
-  public void instructionExecuted(VM vm, ThreadInfo ti, Instruction nextInsn, Instruction executedInsn) {
-    SystemState ss = vm.getSystemState();
-
-    if (executedInsn instanceof EXECUTENATIVE) { // break on method call
-      EXECUTENATIVE exec = (EXECUTENATIVE) executedInsn;
-
-      if (exec.getExecutedMethodName().equals("getInt")){ // Verify.getInt(..) - this insn did create a CG on its own
-        if (!ti.isFirstStepInsn()){ // top half - first execution
-          IntIntervalGenerator cg = new IntIntervalGenerator("instrumentVerifyGetInt", 3,4);
-          ss.setNextChoiceGenerator(cg);
-          ...
-
-        } else { // bottom half - re-execution at the beginning of the next transition
-          IntIntervalGenerator cg = ss.getCurrentChoiceGenerator("instrumentVerifyGetInt", IntIntervalGenerator.class);
-          assert cg != null : "no 'instrumentVerifyGetInt' IntIntervalGenerator found";
-          int myChoice = cg.getNextChoice();
-          ... // process choice
-        }
-      }
-    }
-  }
-~~~~~~~~
-
-
-Sometimes what you do with your choice depends on the execution state of the instruction this `ChoiceGenerator` was created for, and you have to be aware of that the instruction might get re-executed (e.g. after processing the top half of another `ChoiceGenerator` creating method) before it has done what you depend on for your local choice processing. Consider our previous example of the field perturbation. Simply speaking, all we want to do in our listener is just swap operand stack values after a certain `getfield`. However, the partial order reduction of the VM might get in our way because it reschedules the instruction *before* it pushes the value if execution of this instruction might constitute a data race, and therefore required creation of a `ThreadChoiceGenerator` instance. What is worse is that the VM might do this conditionally - if there is only one runnable thread, there is no need for a scheduling point since there can't be a data race. Our own perturbator listener has to account for all that. Luckily, we can use `SystemState.getCurrentChoiceGenerator(id,type)` to unify all these cases, and we just have to restore execution state in case we want to re-execute the instruction ourselves. Here is an example:
-
-~~~~~~~~ {.java}
-  @Override
-  public void instructionExecuted(VM vm, ThreadInfo ti, Instruction nextInsn, Instruction executedInsn) {
-    SystemState ss = vm.getSystemState();
-
-    if (executedInsn instanceof GETFIELD){
-      GETFIELD getInsn = (GETFIELD) executedInsn;
-      FieldInfo fi = getInsn.getFieldInfo();
-      if (fi.getName().equals("perturbedFieldName")){
-
-        IntChoiceFromSet cg = ss.getCurrentChoiceGenerator("fieldReplace", IntChoiceFromSet.class);
-        StackFrame frame = ti.getModifiableTopFrame();
-        if (cg == null){
-
-          // we might get here after a preceding rescheduling exec, i.e.
-          // partial execution (with successive re-execution), or after
-          // non-rescheduling exec has been completed (only one runnable thread).
-          // In the first case we have to restore the operand stack so that
-          // we can re-execute
-          if (!ti.willReExecuteInstruction()){
-            // restore old operand stack contents
-            frame.pop();
-            frame.push(getInsn.getLastThis());
-          }
-
-          cg = new IntChoiceFromSet("fieldReplace", 42, 43);
-          ss.setNextChoiceGenerator(cg);
-          ti.reExecuteInstruction();
-
-        } else {
-          int v = cg.getNextChoice();
-          int n = frame.pop();
-          frame.push(v);
-        }
-      }
-    }
-  }
-~~~~~~~~
-
-These examples show you that at the beginning of each transition, there is a choice value for all the cascaded `ChoiceGenerators` associated with it. If you would add `choiceGeneratorAdvanced()` notifications to your listener, you would also see that JPF processes all related choice combinations.
-
-If you really want to see the context, there are a number of additional methods in `SystemState` that might help you:
-
- * `getChoiceGenerator()` - returns only the last registered one
- * `getChoiceGenerators()` - returns an array of all `ChoiceGenerators` in the current execution path
- * `getLastChoiceGeneratorOfType(cgType)` - returns the last registered `ChoiceGenerator` in the path that is of the specified type
- * `getCurrentChoiceGenerators()` - returns array of all cascaded `ChoiceGenerators` associated with the current transition
- * `getCurrentChoiceGenerator(id)` - returns last registered `ChoiceGenerator` of cascade with specified *id*
- * `getCurrentChoiceGenerator(id,cgType)` - our workhorse: last registered `ChoiceGenerator` of cascade with specified *id* and *cgType* (which can be a supertype of the actual one)
- * etc.
-
-How does the system detect if a `ChoiceGenerator` is cascaded or not? Very simple - within `SystemState.setNextChoiceGenerator(cg)`, we just check if `SystemState` already had a registered next `ChoiceGenerator`, and if so, we set a cascaded attribute for this one. Other than that, we just maintain normal linear `ChoiceGenerator` linkage, which is accessible through `ChoiceGenerator.getPreviousChoiceGenerator()`. If you want to iterate through a cascade yourself, use the `ChoiceGenerator.getCascadedParent()` method, which returns `null` if there is none. Just be aware of that the last registered `ChoiceGenerator` (i.e. what `SystemState.getChoiceGenerator()` returns) does *not* have the cascaded attribute set (i.e. `ChoiceGenerator.isCascaded()` returns `false`).    
\ No newline at end of file
diff --git a/doc/devel/coding_conventions.md b/doc/devel/coding_conventions.md
deleted file mode 100644 (file)
index fe629e9..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Coding Conventions #
-JPF is an open system. In order to keep the source format reasonably consistent, we strive to keep the following minimal set of conventions
-
-  * Two space indentation (no tabs)
-  * Opening brackets in same line (class declaration, method declaration, control statements)
-  * No spaces after opening '(', or before closing ')'
-  * Method declaration parameters indent on column
-  * All files start with copyright and license information
-  * All public class and method declarations have preceding Javadoc comments
-  * We use *camelCase* instead of *underscore_names* for identifiers
-  * Type names are upper case 
-
-The following code snippet illustrates these rules.
-
-~~~~~~~~ {.java}
-/* <copyright notice goes here>
- * <license referral goes here>
- */
-
-/**
- * this is my class declaration example
- */
-    
-public class MyClass {
-   
-  /**
-   * this is my public method example
-   */
-  public void foo (int arg1, int arg2,
-                   int arg3) {
-    if (bar) {
-      ..
-    } else {
-      ..
-    }
-  }
-   ..
-}
-~~~~~~~~
-
-We consider modularity to be of greater importance than source format. With its new configuration scheme, there is no need to introduce dependencies of core classes towards optional extensions anymore. If you add something that is optional, and does not seamlessly fit into an existing directory, keep it separate by adding new directories. The core JPF classes should not contain any additional dependencies to external code.
diff --git a/doc/devel/create_project.md b/doc/devel/create_project.md
deleted file mode 100644 (file)
index 1eeb9b0..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-# Creating a New JPF Module #
-
-So what do you have to do to create a new JPF module? For a quick shortcut to setting up *most* things,  use the `create_project` script of the [jpf-template module](wiki:projects/jpf-template).  
-
-However, jpf-template cannot do everything for you, so see below for more information on how to finish setting up your new project.
-
-Several steps are involved:
-
-### 1. get familiar with the JPF configuration ###
-You need to understand how your project will be looked up and initialized during JPF startup, and the place to learn that is the [JPF configuration](../user/config) page. Once you know what *[site properties](../install/site-properties)* and *project properties* are, you can proceed.
-
-### 2. get familiar with the standard JPF project layout ###
-Although this is mostly convention, and you can deviate if you really need to, please try hard not to.
-
-You can get the details from the [JPF Runtime Modules](modules) page, but the essence is that each project has two (possible) major build artifacts:
-
- * `jpf-<module>.jar` - executed by the host (platform) VM (contains main classes and peers)
- * `jpf-<module>-classes.jar` - executed by JPF (contains modeled classes)
-
-Consequently, your sources are kept in `src/main`, `src/peers`, `src/classes`, `src/annotations`, `src/tests` and `src/examples`. You might only have some of these, but please provide regression tests so that people can check if your project works as expected. 
-
-All 3rd party code that is required at runtime goes into a `lib` directory.
-
-We keep potential annotations separate (and provide additional `jpf-<module>-annotations.jar`) so that external projects (systems under test) can use them without relying on all JPF classes to be in their `classpath`. The idea is that this jar does not contain any code which could alter the system under test behavior if you execute it outside of JPF. 
-
-<The `tools` directory contains 3rd party libraries and tools that are used at build-time. For convenience reasons, we usually copy the small `RunJPF.jar` from the jpf-core in here, so that you can easily run JPF from the command line without the need for platform specific scripts or links, but that is completely optional.>
-
-### 3. create a jpf.properties file ###
-Within the root directory of each JPF module a project properties file is needed which is named `jpf.properties`. It contains the path settings the host VM and JPF need to know about at runtime. It looks like this:
-
-~~~~~~~~ {.bash}
-# standard header
-<module-name> = ${config_path}
-
-# classpath elements for the host VM (java)
-<module-name>.native_classpath = build/<module-name>.jar;lib/...
-
-# classpath elements for JPF
-<module-name>.classpath = build/<module-name>-classes.jar;...
-
-# sources JPF should know about when creating traces etc.
-<module-name>.sourcepath = src/classes;...
-~~~~~~~~
-
-You can add other JPF properties, but be aware of that this is always processed during JPF startup if you add your module to the `extensions` list in your [site.properties](../install/site-properties), and might conflict with other JPF modules. For this reason you should only add your module to `extensions` if you know it will always be used.
-
-
-### 4. create your build.xml ###
-Our build process is [Ant](http://ant.apache.org/) based, hence we need a `build.xml` file. The standard targets are
-
- * `clean`
- * `compile`
- * `build` (the default, creates the jars and hence depends on compile)
- * `test` (run JUnit regression tests, depends on build)
- * `dist` (creates a binary-only distribution) 
-
-If you stick to the general layout, you can use a template like the one attached to this page (of course you need to replace `<your-project-name>`).
-
-Please note how `site.properties` and `jpf.properties` can be used from within the `build.xml` (Ant understands a subset of the JPF property syntax), which means you don't have to explicitly add the jars of other JPF components you depend on (at least jpf-core). You can reference them symbolically like this:
-
-~~~~~~~~ {.xml}
-  <property file="${user.home}/.jpf/site.properties"/>
-  <property file="${jpf-core}/jpf.properties"/>
-  ..
-  <!-- generic classpath settings -->
-  <path id="lib.path">
-
-    <!-- our own classes and libs come first -->
-    <pathelement location="build/main"/>
-    ...
-    <fileset dir=".">
-           <include name="lib/*.jar"/>
-    </fileset>
-
-    <!-- add in what we need from the core -->
-    <pathelement path="${jpf-core.native_classpath}"/>
-  </path>
-  ...
-~~~~~~~~
-
-### 5. add your module to your site.properties ###
-This is optional, you only need to do this if you want to be able to run your JPF module outside its own directory. If so, add an entry to your [site properties file](../install/site-properties) that looks like this:
-
-~~~~~~~~ {.bash}
-...
-<module-name> = <path to your JPF extension module>
-...
-~~~~~~~~
-
-### 6. publish your repository ###
-You can publish this wherever you want ([sourceforge](http://sourceforge.net), [bitbucket](http://bitbucket.org), [google code](http://code.google.com), or [github](http://github.com) are suitable free site supporting Mercurial), or ask us to host it on the JPF server. If you decide to use a 3rd party hosting service, please let us/the JPF community know about it (e.g. by posting to the mailing list at [java-pathfinder@googlegroups.com](https://groups.google.com/forum/#!forum/java-pathfinder).
\ No newline at end of file
diff --git a/doc/devel/design.md b/doc/devel/design.md
deleted file mode 100644 (file)
index 60e0fd3..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# JPF Top-level Design #
-
-JPF was designed around two major abstractions: (1) the *VM*, and (2) the *Search* component.
-
-## Virtual Machine (VM) ##
-
-The VM is the state generator. By executing bytecode instructions, the VM generates state representations that can be
-
-  * checked for equality (if a state has been visited before)
-  * queried (thread states, data values etc.)
-  * stored
-  * restored
-
-The main VM parameterizations are classes that implement the state management (matching, storing, backtracking). Most of the execution scheme is delegated to `SystemState`, which in turn uses `Scheduler`  to generate scheduling sequences of interest.
-
-There are three key methods of the VM employed by the Search component:
-
-  * `forward` - generate the next state, report if the generated state has a successor. If yes, store on a backtrack stack for efficient restoration.
-  * `backtrack` - restore the last state on the backtrack stack
-  * `restoreState` - restore an arbitrary state (not necessarily on the backtrack stack)
-
-![Figure: JPF top-level design](../graphics/jpf-abstractions.svg){align=center width=720}
-
-## Search Strategy ##
-
-At any state, the Search component is responsible for selecting the next state from which the VM should proceed, either by directing the VM to generate the next state (`forward`), or by telling it to backtrack to a previously generated one (`backtrack`). The Search component works as a driver for the VM.
-
-The Search component can be configured to check for certain properties by evaluating property objects (e.g. `NotDeadlockedProperty`, `NoAssertionsViolatedProperty`).
-
-The object encapsulating this component includes a search method which implements a strategy used to traverse the state space. The state space exploration continues until it is completely explored, or a property violation is found.
- The Search component can be configured to use different strategies, such as depth-first search (`DFSearch`), and priority-queue based search that can be parameterized to do various search types based on selecting the most interesting state out of the set of all successors of a given state (`HeuristicSearch`).
-
-## Package Structure ##
-
-The implementation of the JPF core is partitioned into the following packages:
-
-### `gov.nasa.jpf` ###
-The main responsibility of this package is configuration and instantiation of the core JPF objects, namely the Search and VM. The configuration itself is encapsulated by the `Config` class, which contains various methods to create objects or read values from a hierarchy of property files and command line options (see Configuring JPF Runtime Options). Beyond the configuration, the JPF object has little own functionality. It is mainly a convenience construct to start JPF from inside a Java application without having to bother with its complex configuration.
-
-### `gov.nasa.jpf.vm` ###
-This package constitutes the main body of the core code, including the various constructs that implement the Java state generator. Conceptually, the major class is VM, but again this class delegates most of the work to a set of second level classes that together implement the major functionality of JPF. These classes can be roughly divided into three categories:
-
-(1) class management - classes are encapsulated by `ClassInfo` which mostly includes invariant information about fields and methods captured by `FieldInfo` and `MethodInfo`, respectively.
-
-(2) object model - all object data in JPF is stored as integer arrays encapsulated by `Fields` objects. The execution specific lock state of objects is captured by `Monitor` instances. `Fields` and `Monitor` instances together form the objects, which are stored as `ElementInfo`. The heap contains a dynamic array of `ElementInfo` objects where the array indices being used as object reference values
-
-(3) bytecode execution - the execution of bytecode instructions is performed through a collaboration of `SystemState` and `ThreadInfo`, which is also delegated to policy objects implementing the partial order reduction (POR). It starts with the `VM` object calling `SystemState.nextSuccessor()`, which descends into `ThreadInfo.executeStep()` (together, these two methods encapsulate the on-the-fly POR), which in turn calls `ThreadInfo.executeInstruction()` to perform the bytecode execution.
-The actual execution is again delegated to bytecode specific Instruction instances that per default reside in a sub-package `gov.nasa.jpf.vm.bytecode` (the set of bytecode classes to use can be configured via a `InstructionFactory` class which allows the user to define a different execution semantics)
-
-### `gov.nasa.jpf.search` ### 
-This package is relatively small and mainly contains the `Search` class, which is an abstract base for search policies. The major method that encapsulates the policy is `Search.search()`, which is the VM driver (that calls the methods`forward`, `backtrack` and `restore`). This package also contains the plain-vanilla depth-first search policy `DFSearch`.
-More policies can be found in the sub-package `gov.nasa.jpf.search.heuristic`, which uses a `HeuristicSearch` class in conjunction with configurable heuristic objects to prioritize a queue of potential successor states.
diff --git a/doc/devel/eclipse_plugin_update.md b/doc/devel/eclipse_plugin_update.md
deleted file mode 100644 (file)
index 35f663f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-## Hosting an Eclipse plugin update site ##
-
-The first step is to create the local version of the update site.  For example, chapter 18, section 3 of "Eclipse Plug-ins, 3rd edition" will explain how to do this.
-  
-> **Tip:** do not attempt to put the update site in the code repository.  
-
-The plugin and feature files are treated like binaries and bad things will happen.  Here is a sample update site for the mango plugin.
-
-![Local Site](../graphics/localsite.jpg){align=center width=430}
-
-Now you will re-create this directory structure within the wiki.  For the purpose of this discussion, let's pin down the jpf site:
-
-~~~~~~~~ {.bash}
-JPFHOME=http://babelfish.arc.nasa.gov/trac/jpf
-~~~~~~~~
-
-Now chose a home directory, say `HOME`.  For the mango plugin, 
-
-~~~~~~~~ {.bash}
-HOME=wiki/projects/jpf-mango
-~~~~~~~~
-
-Whatever choice of `HOME` you make, the update site you advertise to the world will be `JPFHOME/raw-attachment/HOME/update/`.
-
-
-The `raw-attachment` segment is the *trick* that makes everything work out.  The next step is to create the directory structure for the mirrored update site.  Within `JPFHOME/HOME`, create a link to `JPFHOME/HOME/update`.  Now go to the update page and add the attachments artifacts.jar, content.jar, and site.xml from your local update site.  Create links within `JPFHOME/HOME/update` to `JPFHOME/HOME/update/features` and `JPFHOME/HOME/update/plugins`.  
-
-Attach your feature jar to the features page, and your plugin jar to the plugins page.  That's all there is to it.
-
-> **Tip:** when updating your update site, be sure to sync your plugin and feature with new, higher, revision numbers.  Now rebuild the local site.  Delete all the corresponding attachments in the wiki, and repopulate with the updated versions.
-
-> **Bonus tip:** Once everything is working, you can delete the link to the update site.  This will prevent your visitors from accidentally going to an uninteresting page.  You can always access this page directly from the browser by entering `JPFHOME/HOME/update`.
-
-
-
-
diff --git a/doc/devel/embedded.md b/doc/devel/embedded.md
deleted file mode 100644 (file)
index 0ddd1c3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Embedded JPF #
-JPF can also be used embedded, i.e. called from another Java application. A basic code sequence to start JPF looks like this:
-
-~~~~~~~~ {.java}
-import gov.nasa.jpf.JPF;
-import gov.nasa.jpf.Config;
-
-void runJPF (String[] args) {
-   ..
-   MyListener listener = new MyListener(..);
-
-   // [optionally] if you pass through command line args, 
-   // 'null' any consumed args not to be JPF-processed
-   listener.filterArgs( args);
-   ..
-
-   Config config = JPF.createConfig( args);
-   // set special config key/value pairs here..
-
-   JPF jpf = new JPF( config);
-   jpf.addListener( listener);
-   jpf.run();
-   ..
-}
-~~~~~~~~
-
-Of course, you can also call `gov.nasa.jpf.JPF.main(args)` from within your application, if you don't need to control JPF's configuration or process it's output. 
diff --git a/doc/devel/index.md b/doc/devel/index.md
deleted file mode 100644 (file)
index 8394c9c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# JPF Developer Guide #
-
-From the previous two sections, you have learned that JPF has one recurring, major theme: it is not a monolithic system, but rather a configured collection of components that implement different functions like state space search strategies, report generation and much more. Being adaptive is JPF's answer to the scalability problem of software model checking.
-
-This not only makes JPF a suitable system for research, but chances are that if are you serious enough about JPF application, you sooner or later end up extending it. This section includes the following topics which describe the different mechanisms that can be used to extend JPF.
-
- * [Top-level design](design)
- * Key mechanisms, such as 
-     - [ChoiceGenerators](choicegenerator)
-     - [Partial order reduction](partial_order_reduction)
-     - [Slot and field attributes](attributes)
- * Extension mechanisms, such as
-     - [Listeners](listener)
-     - [Search Strategies](design)
-     - [Model Java Interface (MJI)](mji)
-     - [Bytecode Factories](bytecode_factory)
- * Common utility infrastructures, such as
-     - [Logging system](loggin)
-     - [Reporting system](report)
- * [Running JPF from within your application](embedded)
- * [Writing JPF tests](jpf_tests)
- * [Coding conventions](coding_conventions)
- * [Hosting an Eclipse plugin update site](eclipse_plugin_update) 
\ No newline at end of file
diff --git a/doc/devel/jpf_tests.md b/doc/devel/jpf_tests.md
deleted file mode 100644 (file)
index a445c5a..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-# Writing JPF Tests #
-
-As a complex runtime system for (almost) arbitrary Java programs, it goes without saying that JPF needs a lot of regression tests. You can find these under the `src/tests` directories in (hopefully) all JPF projects. All tests follow the same scheme, which is motivated by the need to run tests in a number of different ways:
-
-  1. as part of the Ant-based build system, i.e. from build.xml
-  1. as explicitly invoked JUnit tests
-  1. by directly running JPF on the test application (i.e. without JUnit, either as a JPF `shell` or via RunTest.jar)
-  1. by running the test application on a normal JVM
-
-The rationale for this is to support various levels of inspection and debugging. 
-
-Each test conceptually consists of a test driver (e.g. executed under JUnit) which starts JPF from within its `@Test` annotated methods, and a class that is executed by JPF in order to check the verification goals. For convenience reasons, jpf-core provides infrastructure that enables you to implement both parts in the same class. This can be confusing at first - **the test class is used to start JPF on itself**.
-
-![Figure: Unit Testing in JPF](../graphics/new-testing.svg){align=center width=870}
-
-The `main()` method of `TestJPF` derived classes always look the same and can be safely copied between tests:
-
-~~~~~~~~ {.java}
-public static void main(String[] testMethods){
-  runTestsOfThisClass(testMethods);
-}
-~~~~~~~~
-
-This method serves two purposes. First, it is used to start the test outside JUnit, either on all `@Test` annotated instance methods, or just on the ones which names are provided as arguments. Second, it serves as the entry point for JPF when it executes the class. In this case, `TestJPF` takes care of invoking JPF on the test class and providing the name of the test method this was executed from.
-
-Other than that, test classes just consist of (almost) normal `@Test` annotated JUnit test methods, which all share the same structure
-
-~~~~~~~~ {.java}
-import org.junit.Test;
-
-@Test public void testX () {
-  if (verifyNoPropertyViolation(JPF_ARGS){
-    .. code to verify by JPF
-  }
-}
-~~~~~~~~
-
-The trick is the call to `verifyNoPropertyViolation()`, or any of the other `verifyXX()` methods of `TestJPF`. If executed by the host VM, i.e. from JUnit, it starts JPF on the same class and the containing method, and returns `false`. This means the corresponding `if` block is **not** executed by the host VM.
-
-When JPF is invoked, the argument to the main() method is set to the method name from which JPF got invoked, which causes `runTestsOfThisMethod()` to execute exactly this method again, but this time under JPF. Instead of re-executing the same `TestJPF.verifyX()` method again (and becoming infinitely recursive), we use a native peer `JPF_gov_nasa_jpf_util_test_TestJPF` which intercepts the `verifyX()` call and simply returns true, i.e. this time *only* the `if` block gets executed.
-
-The rest of the host VM executed `TestJPF.verifyX()` checks the results of the JPF run, and accordingly throws an `AssertionError` in case it does not correspond to the expected result. The most common goals are
-
- * `verifyNoPropertyViolation` - JPF is not supposed to find an error
- * `verifyPropertyViolation` - JPF is supposed to find the specified property violation
- * `verifyUnhandledException` - JPF is supposed to detect an unhandled exception of the specified type
- * `verifyAssertionError` - same for AssertionErrors
- * `verifyDeadlock` - JPF is supposed to find a deadlock
-
-Each of these methods actually delegate running JPF to a corresponding method whose name does not start with 'verify..'. These workhorse methods expect explicit specification of the JPF arguments (including SUT main class name and method names), but they return JPF objects, and therefore can be used for more sophisticated JPF inspection (e.g. to find out about the number of states).
-
-`TestJPF` also provides some convenience methods that can be used within test methods to find out which environment the code is executed from:
-
- * `isJPFRun()` - returns true if the code is executed under JPF
- * `isJUnitRun()` - returns true if the code is executed under JUnit by the host VM
- * `isRunTestRun()` - returns true if the code is executed by RunTest.jar
-
-Here is an example of a typical test method that uses some of these features:
-
-~~~~~~~~ {.java}
-  @Test public void testIntFieldPerturbation() {
-
-    if (!isJPFRun()){ // run this outside of JPF
-      Verify.resetCounter(0);
-    }
-
-    if (verifyNoPropertyViolation("+listener=.listener.Perturbator",
-                                  "+perturb.fields=data",
-                                  "+perturb.data.class=.perturb.IntOverUnder",...
-                                  "+perturb.data.delta=1")){
-      // run this under JPF
-      System.out.println("instance field perturbation test");
-
-      int d = data; // this should be perturbated
-      System.out.println("d = " + d);
-
-      Verify.incrementCounter(0);
-
-    } else { // run this outside of JPF
-      assert Verify.getCounter(0) == 3;
-    }
-  }
-~~~~~~~~
-
-## Running JPF tests from command line ##
-To run JPF tests from the command line, use the RunTest.jar either from `jpf-core/build`, or the one that is distributed with your project containing the tests (`tools/RunTest.jar` for JPF projects). This is an executable jar that expects the test class and (optional) method test names as arguments. If no method names are provided, all `@Test` annotated methods are executed. Most projects have a convenience script `bin/test` to execute RunTest.jar.
-
-~~~~~~~~ {.bash}
-> bin/test gov.nasa.jpf.test.mc.data.PerturbatorTest testIntFieldPerturbation
-
-......................................... testing testIntFieldPerturbation
-  running jpf with args: +listener=.listener.Perturbator +perturb.fields=data +perturb.data.class=.perturb.IntOverUnder +perturb.data.field=gov.nasa.jpf.test.mc.data.PerturbatorTest.data +perturb.data.delta=1 gov.nasa.jpf.test.mc.data.PerturbatorTest testIntFieldPerturbation
-JavaPathfinder v5.x - (C) RIACS/NASA Ames Research Center
-
-
-====================================================== system under test
-application: gov/nasa/jpf/test/mc/data/PerturbatorTest.java
-arguments:   testIntFieldPerturbation 
-
-====================================================== search started: 9/10/10 7:03 PM
-instance field perturbation test
-d = 43
-d = 42
-...
-====================================================== search finished: 9/10/10 7:03 PM
-......................................... testIntFieldPerturbation: Ok
-
-......................................... execution of testsuite: gov.nasa.jpf.test.mc.data.PerturbatorTest SUCCEEDED
-.... [1] testIntFieldPerturbation: Ok
-......................................... tests: 1, failures: 0, errors: 0
-~~~~~~~~
-
-## Running JPF tests under JUnit ##
-
-This is the preferred way to execute JPF regression tests, which is usually done from an Ant build.xml script containing a standard target such as
-
-~~~~~~~~ {.xml}
-  ...
-  <target name="test" depends="build" description="run core regression tests" if="have_tests">
-     ...
-     <junit printsummary="on" showoutput="off" haltonfailure="yes"
-            fork="yes" forkmode="perTest" maxmemory="1024m" outputtoformatters="true">
-       <classpath>
-         <path refid="lib.path"/>
-         <pathelement location="build/tests"/>
-         ...
-       </classpath>
-       <batchtest todir="build/tests">
-          <fileset dir="build/tests">
-            <exclude name="**/JPF_*.class"/>
-            <include name="**/*Test.class"/>
-          </fileset>
-      </batchtest>
-    </junit>
-  </target>
-~~~~~~~~
-
-Most JPF projects have build.xml files you can use as examples.
-
-Please note this means that you should not have any inner classes, interfaces, annotation types etc. with a name ending with `"Test"` since JUnit would interpret these as test cases and most likely complain about missing constructors and `main()` methods.
-
-## Debugging tests ##
-
-Typically, JPF tests are only executed from within an IDE if they fail and need to be debugged. 
-
-Under NetBeans, this can be done by selecting the test class, and then executing the *Debug File* command from the context menu. This will pop up a dialog that lets you enter a specific test method to debug. This method requires a properly set up ide-file-target.xml, which comes with most JPF projects.
-
-Under Eclipse, you can select the test class and then execute **Debug As..** -> **Java Application**.
diff --git a/doc/devel/listener.md b/doc/devel/listener.md
deleted file mode 100644 (file)
index 98af48c..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-# Listeners #
-Listeners are perhaps the most important extension mechanism of JPF. They provide a way to observe, interact with and extend JPF execution with your own classes. Since listeners are dynamically configured at runtime, they do not require any modification to the JPF core. Listeners are executed at the same level like JPF, so there is hardly any limit of what you can do with them.
-
-![Figure 1: JPF Listeners](../graphics/listener-overview.svg){align=center width=800}
-
-The general principle is simple: JPF provides an observer pattern implementation that notifies registered observer instances about certain events at the search level and the VM level. These notifications cover a broad spectrum of JPF operations, from low level events like `instructionExecuted` to high level events like `searchFinished`. Each notification is parameterized with the corresponding source (either the `Search` or the `VM` instance), which can be then used by the notified listener to obtain more information about the event and the JPF's internal state.
-
-Configuration is usually done with the `listener` property, either from the command line, or a .jpf property file. Listeners can also be associated with annotations, to be automatically loaded whenever JPF encounters such an annotation. Applications can use the `@JPFConfig` annotation to explicitly specify JPF listeners. Lastly, if JPF is used in an embedded mode, listeners can be registered with an API.
-
-
-## Listener Types ##
-
-
-There are two basic listener interfaces, depending on corresponding event sources: `SearchListeners` and `VMListeners`. Since these interfaces are quite large, and listeners often need to implement both, we also provide "adapter" classes, i.e. implementors that contain all required method definitions with empty method bodies. Concrete listeners that extend these adapters therefore only have to override the notification methods they are interested in.
-
-The adapter classes are used for the majority of listener implementations, especially since they also support two other interfaces/extension mechanisms that are often used in conjunction with `Search` and `VMListeners`: 
-
- 1. `Property` - to define program properties
- 2. `PublisherExtension` - to produce output within [the JPF reporting system](report)
-
-`ListenerAdapter` is the bare adapter implementation for `SearchListener`, `VMListener` and `PublisherExtension`. This is what is mostly used to collect information during JPF execution (e.g. `CoverageAnalyzer` and `DeadlockAnalyzer`).
-
-`PropertyListenerAdapter` is used in case the listener implements a program property, i.e. it can terminate the search process. A prominent example of this category is `PreciseRaceDetector`.
-
-![Figure 2: Listener Types](../graphics/listeners.svg){align=center width=800}
-
-Choosing the right type for your listener is important, since JPF automatically registers listeners (and properties) based on this type. You can bypass and directly implement single listener interfaces, but then you also have to do the proper registrations.
-
-Usually, the notification alone is not enough, and the listener needs to acquire more information from JPF. For this purpose, we provide either the `Search` or the `VM` instance as notification arguments, and the listener has to use these as "Facades" to query or interact JPF. It therefore matters to implement the listener within the right package.
-
-
-## SearchListener ##
-
-
-`SearchListener` instances are used to monitor the state space search process, e.g. to create graphical representations of the state-graph. They provide notification methods for all major Search actions.
-
-~~~~~~~~ {.java}
-package gov.nasa.jpf.search;
-public interface SearchListener extends JPFListener {
-  void searchStarted (Search search);  
-  void stateAdvanced (Search search);       // got next state
-  void stateProcessed (Search search);      // state is fully explored
-  void stateBacktracked (Search search);    // state was backtracked one step (same path)
-  void stateStored (Search search);         // somebody stored the state
-  void stateRestored (Search search);       // previously generated state was restored (any path)
-  void propertyViolated (Search search);    // JPF encountered a property violation
-  void searchConstraintHit (Search search); // e.g. max search depth
-  void searchFinished (Search search);
-}}
-~~~~~~~~
-
-
-For the standard depth first search (`gov.nasa.jpf.search.DFSearch`), listener implementations can assume the following notification model:
-
-
-![Figure 3: Depth first listener notifications](../graphics/DFSListener.svg){align=center width=500}
-
-The most frequently used notifications are:
-
-`stateAdvanced` - to store additional, backtrackable state information in an associative array
-
-`stateBacktracked` - to restore additional state information
-
-`searchFinished` - to process listener results
-
-
-## VMListener ##
-
-
-This is a fat interface, reflecting various VM operations
-
-~~~~~~~~ {.java}
-package gov.nasa.jpf.jvm;
-public interface VMListener extends JPFListener {
-  //--- basic bytecode execution
-  void executeInstruction (JVM vm);  // JVM is about to execute the next instruction
-  void instructionExecuted (JVM vm); // JVM has executed an instruction
-
-  //--- thread operations (scheduling)
-  void threadStarted (JVM vm);       // new Thread entered run()
-  void threadBlocked (JVM vm);       // thread waits to acquire a lock
-  void threadWaiting (JVM vm);       // thread is waiting for signal
-  void threadNotified (JVM vm);      // thread got notified
-  void threadInterrupted (JVM vm);   // thread got interrupted
-  void threadTerminated (JVM vm);    // Thread exited run()
-  void threadScheduled (JVM vm);     // new thread was scheduled by JVM
-
-  //--- class management
-  void classLoaded (JVM vm);         // new class was loaded
-
-  //--- object operations
-  void objectCreated (JVM vm);       // new object was created
-  void objectReleased (JVM vm);      // object was garbage collected
-  void objectLocked (JVM vm);        // object lock acquired
-  void objectUnlocked (JVM vm);      // object lock released
-  void objectWait (JVM vm);          // somebody waits for object lock
-  void objectNotify (JVM vm);        // notify single waiter for object lock
-  void objectNotifyAll (JVM vm);     // notify all waiters for object lock
-
-  void gcBegin (JVM vm);             // start garbage collection
-  void gcEnd (JVM vm);               // garbage collection finished
-
-  void exceptionThrown (JVM vm);     // exception was thrown
-
-  //--- ChoiceGenerator operations  
-  void choiceGeneratorSet (JVM vm);  // new ChoiceGenerator registered
-  void choiceGeneratorAdvanced (JVM vm); // new choice from current ChoiceGenerator
-  void choiceGeneratorProcessed (JVM vm); // current ChoiceGenerator processed all choices  
-}
-~~~~~~~~
-
-
-The most commonly used methods are the instruction notifications:
-
-`executeInstruction` - is called before a bytecode instruction gets executed by the VM. The listener can even use this to skip and/or replace this instruction, which is useful for non-invasive instrumentation.
-
-`instructionExecuted` - is the post-execution notification, which is suitable to keep track of execution results (method invocations, assigned field values, branch results etc.)
-
-
-## Example ##
-
-The following example is a slightly abbreviated form our race detector. The basic idea is simple: every time we encounter a new scheduling point (i.e. new `ThreadChoiceGenerator` object) that is due to a field access on a shared object, we check if any of the other runnable threads is currently accessing the same field on the same object. If at least one operation is a `putfield`, we have a potential race.
-
-The example shows three aspects that are quite typical: 
-
-  1. listeners often use only a small number of notification methods
-
-  2. they often do not require a huge amount of code (most expensive operations are performed by the `VM` and the `Search` objects)
-
-  3. sometimes you have to dig deep into JPF internal constructs, to extract things like `ThreadInfo`, `FieldInfo` and `ChoiceGenerator` instances
-
-~~~~~~~~ {.java}
-public class PreciseRaceDetector extends PropertyListenerAdapter {
-  FieldInfo raceField;
-  ...
-  //--- the Property part
-  public boolean check(Search search, JVM vm) {
-    return (raceField == null);
-  }
-
-  //--- the VMListener part
-  public void choiceGeneratorSet(JVM vm) {
-    ChoiceGenerator<?> cg = vm.getLastChoiceGenerator();
-
-    if (cg instanceof ThreadChoiceFromSet) {
-      ThreadInfo[] threads = ((ThreadChoiceFromSet)cg).getAllThreadChoices();
-      ElementInfo[eiCandidates = new ElementInfo[threads.length](]);
-      FieldInfo[fiCandidates = new FieldInfo[threads.length](]);
-
-      for (int i=0; i<threads.length; i++) {
-        ThreadInfo ti = threads[i];
-        Instruction insn = ti.getPC();
-        
-        if (insn instanceof FieldInstruction) { // Ok, its a get/putfield
-          FieldInstruction finsn = (FieldInstruction)insn;
-          FieldInfo fi = finsn.getFieldInfo();
-
-          if (StringSetMatcher.isMatch(fi.getFullName(), includes, excludes)) {
-            ElementInfo ei = finsn.peekElementInfo(ti);
-
-            // check if we have seen it before from another thread
-            int idx=-1;
-            for (int j=0; j<i; j++) {
-              if ((ei ## eiCandidates[&& (fi ## fiCandidates[j](j])))) {
-                idx = j;
-                break;
-              }
-            }
-
-            if (idx >= 0){ // yes, we have multiple accesses on the same object/field
-              Instruction otherInsn = threads[idx].getPC();
-              if (isPutInsn(otherInsn) || isPutInsn(insn)) {
-                raceField = ((FieldInstruction)insn).getFieldInfo();
-                ..
-                return;
-              }
-            } else {
-              eiCandidates[i] = ei;
-              fiCandidates[i] = fi;
-            }
-          }
-        }
-      }
-    }
-  }
-
-  public void executeInstruction (JVM jvm) {
-    if (raceField != null) {  // we're done, report as quickly as possible
-      ThreadInfo ti = jvm.getLastThreadInfo();
-      ti.breakTransition();
-    }
-  }
-}
-~~~~~~~~
-
-## Instantiation ##
-
-Explicit instantiation of a listener (e.g. from a JPF shell) can be done in any way. If the listener is specified as a JPF property, it's class either needs to have a default constructor, or a constructor that takes a single `gov.nasa.jpf.Config` argument. The `Config` object that is passed into this constructor by JPF is the same that was used for the initialization of JPF itself. This is the preferred method if the listener has to be parameterized. In case of the `PreciseRaceDetector` example, this can be used to filter relevant fields with regular expressions:
-
-~~~~~~~~ {.java}
-public class PreciseRaceDetector extends PropertyListenerAdapter {
-  ...
-  StringSetMatcher includes = null;
-  StringSetMatcher excludes = null;
-  
-  public PreciseRaceDetector (Config conf) {
-    includes = StringSetMatcher.getNonEmpty(conf.getStringArray("race.include"));
-    excludes = StringSetMatcher.getNonEmpty(conf.getStringArray("race.exclude"));
-  }
-  ...
-  public void choiceGeneratorSet(JVM vm) {
-    ...
-        FieldInfo fi =..
-        if (StringSetMatcher.isMatch(fi.getFullName(), includes, excludes))
-     ...
-  }
-~~~~~~~~
-
-
-## Configuration ##
-
-Listener configuration can be done in a number of ways: via JPF properties from the command line or a .jpf file, via JPF APIs from a JPF shell (a program invoking JPF), or from the system under test by using Java annotations (i.e. without code modification).
-
-Since listeners are executed by the host VM, they have to be in the `CLASSPATH` (`jpf-core.native_classpath` property).
-
-
-### command line ###
-
-
-the *listener* property can be used to specify a colon separated list of listener class names:
-
-~~~~~~~~ {.bash}
-bin/jpf ... +listener=x.y.MyFirstListener,x.z.MySecondListener ...
-~~~~~~~~
-
-
-### .jpf property file ###
-
-
-If you have several listeners and/or a number of other JPF options, it is more convenient to add the `listener` property to a .jpf file:
-
-~~~~~~~~ {.bash}
-# Racer-listener.jpf - JPF mode property file to detect data races in jpftest.Racer
-target = jpftest.Racer
-listener=gov.nasa.jpf.tools.PreciseRaceDetector
-~~~~~~~~
-
-
-### Autoload Annotations ###
-
-
-Consider your system under test is marked up with a Java annotation that represent properties. For example, you can use the `@NonNull` annotation to express that a method is not allowed to return a `null` value:
-
-~~~~~~~~ {.java}
-import gov.nasa.jpf.NonNull; 
-  ...
-  @NonNull X computeX (..) {
-    //.. some complex computation
-  }
-  ...
-~~~~~~~~
-
-You can use .jpf property files (or the command line, if you love to type) to tell JPF that it should automatically load and register a corresponding listener (e.g. `NonNullChecker`) if it encounters such a `@NonNull` annotation during class loading:
-
-~~~~~~~~ {.bash}
-..
-listener.autoload = gov.nasa.jpf.NonNull,...
-listener.gov.nasa.jpf.NonNull = gov.nasa.jpf.tools.NonNullChecker
-...
-~~~~~~~~
-
-
-### @JPFConfig annotation (SuT) ###
-
-
-You can also explicitly direct JPF to load the listener from within your application by using the `@JPFConfig` annotation:
-
-~~~~~~~~ {.java}
-import gov.nasa.jpf.JPFConfig;
-..
-// set JPF properties via properties at class load time
-@JPFConfig ({"listener+=.tools.SharedChecker", ..})
-public class TestNonShared implements Runnable {
-  ...
-}
-~~~~~~~~
-
-However, this is not recommended outside JPF tests - the application would run, but not compile without JPF.
-
-
-### Verify API (SuT) ###
-
-
-A less often used method is to set listeners is to use the `gov.nasa.jpf.vm.Verify` API from within your application. With this, you can control the exact load time of the listener (but be aware of backtracking). With this, the above example would become
-
-~~~~~~~~ {.java}
-import gov.nasa.jpf.vm.Verify;
-..
-public class TestNonShared implements Runnable {
-  ...
-  public static void main (String[] args){
-    
-    // set JPF properties programmatically
-    Verify.setProperties("listener+=.tools.SharedChecker", ...);
-    ..
-  }
-}
-~~~~~~~~
-
-This method should only be used in special cases (models written explicitly for JPF verification), since it does not run outside JPF.
-
-
-### JPF API (embedded mode) ###
-
-
-If JPF is explicitly started from within another application, listeners can be instantiated at will and configured via the `JPF.addListener(..)` API:
-
-~~~~~~~~ {.java}
-MyListener listener=new MyListener(..);
-..
-Config config = JPF.createConfig( args);
-JPF jpf = new JPF( config);
-jpf.addListener(listener);
-jpf.run();
-..
-~~~~~~~~
-
-Most listeners tend to fall into three major categories: 
-
-1. system class (e.g. for logging) - is usually configured via the default.properties.
-2. complex properties - is configured with an application specific mode property file.
-3. JPF debugging - is specified via the command line (`+key=value` overrides).
diff --git a/doc/devel/logging.md b/doc/devel/logging.md
deleted file mode 100644 (file)
index 3993fdf..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# The JPF Logging API #
-There is one simple rule: do not use `System.out` or `System.err` for any permanent logging
-
-
-Of course we all do this temporarily during debugging, but it really shouldn't stay in the code. The logging infrastructure is quite easy to use. Just declare a static `Logger` instance with an appropriate id (either package or logging topic) at the top of your class, and then use the `Logger` API to create output:
-
-~~~~~~~~ {.java}
-...
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-package x.y.z;
-
-class MyClass .. {
-  static Logger log = JPF.getLogger("x.y.z");
-  ...
-    log.severe("there was an error");
-  ...
-    log.warning("there was a problem");
-  ...
-    log.info("something FYI");
-  ...
-    if (log.isLoggable(Level.FINE)){    // (1) don't create garbage
-        log.fine("this is some detailed info about: " + something);
-    }
-  ...
-}
-~~~~~~~~
-
-Note that there is only one instance for each `Logger` ID, i.e. you can have a corresponding static field in all your relevant classes, and don't have to share the fields. Another aspect that is mostly important for the lower log levels (e.g. `FINE`) is that you should't concatenate log messages in operations that occur frequently, since the corresponding `StringBuilder` instances can cause performance degradations even if the log level is not set (the arguments still get evaluated). In this case, encapsulate the logging in `log.isLoggable(level){..}` blocks.
-
diff --git a/doc/devel/mercurial.md b/doc/devel/mercurial.md
deleted file mode 100644 (file)
index b1b3051..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-# Mercurial in 5 Minutes #\r
-\r
-[Mercurial](http://www.selenic.com/mercurial) is a *distributed version control system* (DVCS) of the same category such as the likes of [Git](http://git-scm.com/) or [Bazaar](http://bazaar.canonical.com/en/). If you know nothing else about DVCS, this means mostly one thing - **all repositories are created equal**. There is no such thing as a different repository format for public and private repositories. All repositories (that are synchronized) have the same, stored history information.\r
-\r
-Yes, this means you can finally synchronize your working repos with more than one "master" repository, e.g. with several local ones, closed workgroup repos, and a public master repo (that just happens to be designated as such).\r
-\r
-Each Mercurial repository consists of an (optional) working copy of your files, and a `.hg` directory in your repo root dir that holds all the version control info. Be careful not to delete the `.hg` dir, otherwise your repo is reduced to just a snapshot of your current working files.\r
-\r
-A central concept of DVCS is the *change set* - think of it as the diff of all files that have been changed when you do a commit. This is what DVCS store (e.g. Mercurial in the `.hg` dir) and compare between different repositories. One implication of this is that you can't do partial commits like in CVS or SVN (e.g. by just committing changes within a certain subdirectory). You always have to execute the Mercurial commands in the top dir of the repository you are working in.\r
-\r
-If you have previously worked with CVS or SVN, another difference you have to wrap your head around is that there are commands that work locally, and commands that interact with the remote repo. __The `commit` and `update` commands are only local__. The `push` and `pull` commands synchronize your local repo with an external one (like commit and update did in CVS/SVN).\r
-\r
-Here are the main commands to interact with Mercurial:\r
-\r
-![](mercurial.png)\r
-\r
-**hg clone <url>** - this is the first command that clones an external repository (either from `file:///...` or `http://...` URLs). It creates both a working copy and the `.hg` directory (with contents)\r
-\r
-**hg init** - is what you do if you create a local repository for which there is no external one yet. Just create your files, `cd` into the top directory, and execute the command (which will create the `.hg` for you)\r
-\r
-**hg pull [-u] <url>** - updates the repo you are currently in from the provided URL. Note that your working copy is only updated if you use the `-u` option\r
-\r
-**hg incoming <url>** - is the little brother of `pull`. It just tells you if there are changesets in the remote repository you would pull\r
-\r
-**hg status** - tells you if there are uncommitted changes in your working copy that have to be committed to the local `.hg` directory before you can `push` or `pull`\r
-\r
-**hg diff** - does a bit more, it also shows you a diff file with the uncommitted changes\r
-\r
-**hg add <file>** - adds a file to the repo\r
-\r
-**hg remove <file>** - removes a file from the repo\r
-\r
-**hg addremove** - adds all new files of the working copy that are not in the repository yet, and removes all which are not in the working copy anymore\r
-\r
-**hg commit** - saves changes in your working copy to your local `.hg`. Do this early and often, this is now just a local operation that doesn't change anything outside the repo you are working with\r
-\r
-**hg update** - would update your working copy from your local `.hg`. It is rarely used if you pull with the `-u` option\r
-\r
-**hg push <url>** - pushes the relevant changesets of your local `.hg` back to the external repo with the provided URL. Make sure you have no uncommitted changes (Mercurial would refuse to push), and - in case the external repo is shared - that you pulled/merged all changesets of the external repo before you push\r
-\r
-**hg outgoing <url>** - is the dry run version of a push, it tells you if there are changesets that would have to be pushed  \r
-\r
-**hg revert** - reverts your working copy to a previous version stored in your local `.hg`\r
-\r
-**hg heads** - tells you if there are branches in your repo, which usually happens if you pull from a changed external repo while having un-pushed local changes that are committed\r
-\r
-**hg merge** - gets rid of multiple heads. Make sure to get rid of these by merging as soon as you detect them, it only gets more difficult with more external and local changes. Once there are collisions, you are back to the CVS/SVN merge mess\r
-\r
-You can always obtain more information by executing\r
-~~~~~~~~\r
-#!sh\r
-> hg help [command]\r
-~~~~~~~~\r
-If you don't list a command, all available ones will be displayed.\r
-\r
-Commands that refer to external repos take URLs such as `http://babelfish.arc.nasa.gov/hg/jpf/jpf-core` as arguments.\r
diff --git a/doc/devel/mji.md b/doc/devel/mji.md
deleted file mode 100644 (file)
index 817cdd1..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-# Model Java Interface (MJI) #
-## Purpose ##
-
-Even if it is just a Java application (i.e. solely consists of Java classes), JPF can be viewed as a Java Virtual Machine (JVM) in itself. The consequence is that (*.class) class files, and even the same files at times, are processed in two different ways in a JVM running JPF
-
-  * as ordinary Java classes managed and executed by the host JVM (standard Java library classes, JPF implementation classes)
-  * as "modeled" classes managed and processed (verified) by JPF
-
-Class lookup in both layers is based on the CLASSPATH environment variable / command line parameter, but this should not obfuscate the fact that we have to clearly distinguish between these two modes. In particular, JPF (i.e. the "Model" layer) has its own class and object model, which is completely different and incompatible to the (hidden) class and object models of the underlying host JVM executing JPF
-
-![Figure 1: JPF Layers](../graphics/jpf-layers.svg){align=center width=560}
-
-Each standard JVM supports a so called Java Native Interface (JNI), that is used to delegate execution from the Java level (i.e. JVM controlled bytecode) down into the (platform dependent) native layer (machine code). This is normally used to interface certain functionalities to the platform OS / architecture (e.g. I/O or graphics).
-
-Interestingly enough, there exists a analogous need to lower the "execution" level in JPF, from JPF controlled bytecode into JVM controlled bytecode. According to this analogy, the JPF specific interface is called Model Java interface (MJI).
-
-Even though MJI offers a wide range of applications, there are three major usages for delegating bytecode execution into the host JVM:
-
- 1. Interception of native methods - without a abstraction lowering mechanism, JPF would be forced to completely ignore native methods, i.e. would fail on applications relying on the side effects of such methods, which is not acceptable (even if  many native methods indeed can be ignored if we restrict the set of verification targets)
-
- 2. Interfacing of JPF system level functionality - some system level functions of standard library classes (esp. java.lang.Class, java.lang.Thread) have to be intercepted even if they are not native because they have to affect the JPF internal class, object and thread model (etc. loading classes, creating / starting threads). It should be noted that MJI can also be used to extend the functionality of JPF without changing its implementation.
-
-3. State space reduction - by delegating bytecode execution into the non-state-tracked host JVM, we can cut off large parts of the state space, provided that we know the corresponding method side effects are not relevant for property verification (e.g. `System.out.println(..)`)
-
-Besides these standard usages, there exist more exotic applications like collecting information about JPF state space exploration and making it available both to JPF and the verification target.
-
-
-## MJI Components ##
-
-
-The basic functionality of MJI consists of a mechanism to intercept method invocations, and delegate them by means of Java reflection calls to dedicated classes. There are two types of classes involved, residing at different layers:
-
-  * Model Classes - these classes execute by the VM of JPF, which might be completely unknown to the host JVM
-  * Native Peers - these classes, implemented by `NativePeer` subclasses, contain the implementations of the methods to intercept, and to execute by the host JVM
-
-As part of the JPF implementation, MJI automatically takes care of determining which method invocations have to be intercepted by looking up the corresponding native peer methods
-
-![Figure 2: MJI Functions](../graphics/mji-functions.svg){align=center width=600}
-
-This would not be very useful without being able to access the JPF object model (or other JPF intrinsics), from inside the native peer methods. Instead of requiring all native peers implementation to reside in a JPF internal package, there exists an interface class `MJIEnv` that provide access to the JPF internal structure in a controlled way. `NativePeer` classes  residing in `gov.nasa.jpf.vm` (i.e. the same package as `MJIEnv`) can reach all internal JPF features. Outside this package, the available API in `MJIEnv` is mostly restricted to the access JPF object (getting and setting values).
-
-![Figure 3: MJI Call Sequence](../graphics/mji-call.svg){align=center width=580}
-
-Before a native peer method can be used, JPF has to establish the correspondence between the model class and the native peer. This takes place at load time of the model class. MJI uses a special name mangling scheme to lookup native peers, using the model class package name and class name to deduce the native peer class name.
-
-![Figure 3: MJI name mangling](../graphics/mji-mangling.svg){align=center width=560}
-
-Since the model class package is encoded in the native peer name, the package of the native peer can be chosen freely. In analogy to JNI, native peers methods names include the signature of the model method by encoding its parameter types. If there is no potential ambiguity, i.e. mapping from native peer methods to model class methods is unique, signature encoding is not required.
-
-Each native peer, which is an instance of a `NativePeer` subclass, is associated with exactly one `ClassInfo` instance.
-All the native peer methods to be intercepted have to be `public` and annotated with `gov.nasa.jpf.annotation.MJI`. 
-Moreover, MJI requires them to have two parameters: 
-
-  * An instance of `MJIEnv` which can be used to access JPF internal constructs
-  * An integer which is a handle for the corresponding JPF `this` object (or the `java.lang.Class` object in case of a static method) including the method to be intercepted
-
-See [Mangling for MJI](mji/mangling) for more details and examples of mangling.
-
-Going beyond the JNI analogy, MJI can also be used to intercept
-
-  * non-native methods (i.e. the lookup process is driven by the methods found in the native peer, not the `native` attributes in the model class. This can be particularly useful in case the class is used from both as a model class and a JVM class (e.g. `gov.nasa.jpf.vm.Verify`), using a method body that directly refers to the native peer
-  * class initialization (the corresponding native peer method has to be named `$clinit(MJIEnv env, int clsRef)`)
-  * constructors (the corresponding native peer method has to be named `$init__<sig>(MJIEnv env,int objRef, <ctor-params>)` and the normal signature mangling rules apply)
-
-
-It is important to note that type correspondence does NOT include references. All references (object types) on the JPF side are transformed in handles (int values) on the JVM side. The passed in `MJIEnv` parameter has to be used to convert/analyze the JPF object. Since MJI per default uses the standard Java reflection call mechanism, there is a significant speed penalty (lookup, parameter conversion etc.), which again is a analogy to JNI.
-
-Even if it is not directly related to MJI, it should be mentioned that some JPF specific model classes cannot be loaded via the CLASSPATH (e.g. `java.lang.Class`), since they contain JPF based code that is not compatible with the host JVM (e.g. relying on native methods that refer to JPF functionality). Such classes should be kept in separate directories / jars that are specified with the JPF command line option `-jpf-bootclasspath` or `-jpf-classpath`. This is mostly the case for system classes. On the other hand, model classes don't have to be JPF specific. It is perfectly fine to provide a native peer for a standard Java class (e.g. `java.lang.Character`), if only certain methods from that standard class needs to be intercepted. Native peers can contain any number of non-"native" methods and fields, but those should not be annotated with `@MJI` to avoid lookup problems.
-
-## Tools ##
-
-To ease the tedious process of manually mangle method names, MJI includes a tool to automatically create skeletons of native peers from a given Model class, called `GenPeer`. The translation process uses Java reflection, i.e. the model class needs to be in the CLASSPATH and is specified in normal dot notation (i.e. not as a file).
-
-![Figure 4: The GenPeer tool](../graphics/genpeer.svg){align=center width=470}
-
-There exist a number of command line options that can be displayed by calling `GenPeer` without arguments. `GenPeer` per default writes to stdout, i.e. the output has to be redirected into a file.
-
-Since method invocation by reflection used to be a slow operation, we previously also had a tool called `GenPeerDispatcher`, which used method signature hash-codes to explicitly dispatch native peer methods. With recent improvements in JVM performance, this tool became obsolete.
-
-
-## Example ##
-
-
-The following example is an excerpt of a JPF regression test, showing how to intercept various different method types, and using `MJIEnv` to access JPF objects.
-
-
-### Model class (JPF side) ###
-
-
-This is executed by JPF, which means it needs to be in JPF's  `vm.classpath` setting. 
-
-~~~~~~~~ {.java}
-public class TestNativePeer {
-    static int sdata;
-    
-    static {
-      // only here to be intercepted
-    }
-    
-    int idata;
-    
-    TestNativePeer (int data) {
-      // only here to be intercepted
-
-    }
-  
-    public void testClInit () {
-      if (sdata != 42) {
-        throw new RuntimeException("native 'clinit' failed");
-      }
-    }
-
-    public void testInit () {
-      TestNativePeer t = new TestNativePeer(42);
-
-      if (t.idata != 42) {
-        throw new RuntimeException("native 'init' failed");
-      }
-    }
-
-    native int nativeInstanceMethod (double d, char c, boolean b, int i);
-
-    public void testNativeInstanceMethod () {
-
-      int res = nativeInstanceMethod(2.0, '?', true, 40);
-      if (res != 42) {
-        throw new RuntimeException("native instance method failed");
-      }
-    }
-    
-    native long nativeStaticMethod (long l, String s);
-
-    public void testNativeStaticMethod () {
-      long res =  nativeStaticMethod(40, "Blah");
-
-      if (res != 42) {
-        throw new RuntimeException("native instance method failed");
-
-      }
-    }
-    
-    native void nativeException ();
-    
-    public void testNativeException () {
-      try {
-        nativeException();
-      } catch (UnsupportedOperationException ux) {
-        String details = ux.getMessage();
-
-        if ("caught me".equals(details)) {
-          return;
-        } else {
-          throw new RuntimeException("wrong native exception details: " +
-                                     details);
-        }
-      } catch (Throwable t) {
-        throw new RuntimeException("wrong native exception type: " +
-                                   t.getClass());
-      }
-
-      throw new RuntimeException("no native exception thrown");
-    }
-  }
-~~~~~~~~
-
-
-### Native Peer class (host VM side) ###
-
-
-This is executed by the host VM (i.e. at the same level like JPF itself), so make sure it is in your CLASSPATH.
-
-~~~~~~~~ {.java}
-public class JPF_gov_nasa_jpf_vm_TestNativePeer {
-
-    @MJI
-    public static void $clinit (MJIEnv env, int rcls) {
-      env.setStaticIntField(rcls, "sdata", 42);
-    }
-
-    @MJI
-    public static void $init__I (MJIEnv env, int robj, int i) {
-      env.setIntField(robj, "idata", i);
-    }
-
-    // preferably use full signature mangling
-    @MJI
-    public static int nativeInstanceMethod__DCZI__I (MJIEnv env, int robj,
-                                            double d, char c,
-                                            boolean b, int i) {
-      if ((d ## 2.0) && (c  ## '?') && b) {
-        return i + 2;
-      }
-      return 0;
-    }
-
-    //..but it also works without, if there is no overloading (don't be lazy!) 
-    @MJI
-    public static long nativeStaticMethod (MJIEnv env, int rcls,
-                                           long l, int stringRef) {
-      String s = env.getStringObject(stringRef);
-      if ("Blah".equals(s)) {
-        return l + 2;
-      }
-      return 0;
-    }
-
-    @MJI
-    public static void nativeException____V (MJIEnv env, int robj) {
-      env.throwException("java.lang.UnsupportedOperationException",
-                         "caught me");
-    }
-  }
-~~~~~~~~
-
diff --git a/doc/devel/mji/mangling.md b/doc/devel/mji/mangling.md
deleted file mode 100644 (file)
index 5e2847a..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-# Mangling for MJI #
-## Mangling Methods ##
-Suppose your method looks like 
-
-~~~~~~~~ {.java}
-T1 foo(T2 x, T3 y, ...)
-~~~~~~~~
-
-where the `Ti` are Java types.
-
-If `T1` is a primitive type or `void`, then the mangled MJI method looks
-like
-
-~~~~~~~~ {.java}
-public static T1 foo__MT2MT3...__MT1(...)
-~~~~~~~~
-
-where the `MTi` are the mangled versions of the `Ti`.  
-Mangling of types is described in the Mangling Types section below. 
-Note that `T1` appears twice, once not mangled (`T1`) and once mangled
-(`MT1`).  The `__` is two consecutive underscores: `_` followed by
-`_`.
-
-As a not-so-special case, if `foo` has no arguments, then the mangled method
-will have four consecutive underscores:
-
-~~~~~~~~ {.java}
-  `T1 foo()`[[br]]
-~~~~~~~~
-
-goes to
-
-~~~~~~~~ {.java}
-  `public static T1 foo____MT1(...)`
-~~~~~~~~
-
-If `T1` is not a primitive type, then the mangled `MJI` method looks like 
-
-~~~~~~~~ {.java}
-  `public static int foo__MT2MT3...__MT1`
-~~~~~~~~
-
-where the `MTi` are as above.  Note that `T1` only appears once in this
-case.  The method's return type is `int`.  As before, a method with no
-arguments gets mangled to something with four consecutive underscores.
-
-Also, the use of generics is ignored when mangling names.
-
-
-## Mangling Constructors ##
-Constructors are treated as methods named `$init` with return type `void`.
-
-
-## Mangling Static Initializers ##
-Static initializers are treated as methods named `$clinit` with no
-arguments and return type `void`.  Thus, their MJI versions always
-have the mangled signature:
-
-~~~~~~~~ {.java}
-public static void $clinit____V (MJIEnv env, int clsObjRef)
-~~~~~~~~
-
-or the equivalent unmangled signature:
-
-~~~~~~~~ {.java}
-public static void $clinit (MJIEnv env, int clsObjRef)
-~~~~~~~~
-
-
-## Mangling Types ##
-  - Convert primitives and `void` as follows
-
-    |Java Type|Mangled Type|
-    | ------- |:---:|
-    |`boolean`|`Z`|
-    |`byte`   |`B`|
-    |`char`   |`C`|
-    |`short`  |`S`|
-    |`int`    |`I`|
-    |`long`   |`J`|
-    |`float`  |`F`|
-    |`double` |`D`|
-    |`void`   |`V`|
-
-  - Convert a non-array reference type `T` in package `x.y`
-    (e.g. `java.lang.String`) as follows
-    - `x.y.T`   --> `Lx_y_T_2`
-    - Example: `java.lang.String` --> `Ljava_lang_String_2`
-
-  - Convert an array of primitive type `T`
-    (e.g. `byte[]`) as follows:
-    - `T[]` --> `_3MT`  where `MT` is the mangled version of `T`
-      (e.g. for `T=byte`, `MT=B`)
-    - Example: `byte[]` --> `_3B`
-
-  - Convert an array of reference type `T` in package `x.y`
-    (e.g. `java.lang.String[]`) as follows:
-    - `x.y.T[]` --> `_3Lx_y_T_2`
-    - Example: `java.lang.String[]` --> `_3Ljava_lang_String_2`
-
-
-## Method Examples ##
-
- `void` return type, single primitive argument:
-
-~~~~~~~~ {.java}
-  public static void resetCounter(int id)
--->
-  public static final void resetCounter__I__V(MJIEnv env, int objref, int id)
-~~~~~~~~
-
- Primitive return type, no arguments:
-
-~~~~~~~~ {.java}
-  public native boolean isArray()
--->
-  public static boolean isArray____Z(MJIEnv env, int objref)
-~~~~~~~~
-
- Primitive return type, single primitive argument:
-
-~~~~~~~~ {.java}
-  public static double abs(double a)
--->
-  public static double abs__D__D(MJIEnv env, int clsObjRef, double a)
-~~~~~~~~
-
- Primitive return type, two primitive arguments:
-
-~~~~~~~~ {.java}
-  public static long min(long a, long b)
---> 
-  public static long min__JJ__J(MJIEnv env, int clsObjRef, long a, long b)
-~~~~~~~~
-
-
- `void` return type, arguments include an array of a primitive type:
-
-~~~~~~~~ {.java}
-  public native void write (byte[] buf, int off, int len);
--->
-  public static void write___3BII__V(MJIEnv env, int objref,
-                                     int bufRef, int off, int len)
-~~~~~~~~
-
-
- `void` return type, argument is an array of a reference type: 
-
-~~~~~~~~ {.java}
-   public static void print(String s)
--->
-  public static void print___3Ljava_lang_String_2__V(MJIEnv env, int clsRef, int argsRef)
-~~~~~~~~
-
- Array of reference types returned, no arguments: 
-~~~~~~~~ {.java}
-  public native Annotation[] getAnnotations()
--->
-  public static int getAnnotations_____3Ljava_lang_annotation_Annotation_2(MJIEnv env, int robj)
-~~~~~~~~
-   Notice there are 5 underscores before the `3L`: two marking the
-   arguments, two marking the return type, and one from the `_3`
-   signalling an array.
-
- Array of reference types using generics returned, no arguments:
-
-~~~~~~~~ {.java}
-  public native Class<?>[] getParameterTypes()
--->
-  public static int getParameterTypes_____3Ljava_lang_Class_2(MJIEnv env, int objref)
-~~~~~~~~
-    
-Note: the use of generics is ignored in the mangling.
-
-
-
-## Constructor Examples ##
-
-Constructors are treated as though they were methods named `$init`
-returning `void`, so the method examples above should also be helpful
-for constructors.  Here are a few more examples.
-
-In the class `ConsoleOutputStream`:
-
-~~~~~~~~ {.java}
-  public ConsoleOutputStream()
--->
-  public static void $init____V(MJIEnv env, int objref)
-~~~~~~~~
-
-In the class `AtomicLongFieldUpdater`:
-
-~~~~~~~~ {.java}
-  protected AtomicLongFieldUpdater(Class<T> objClass, String fieldName)
--->
-  public static void $init__Ljava_lang_Class_2Ljava_lang_String_2__V
-                         (MJIEnv env, int objRef,
-                          int tClsObjRef, int fNameRef)
-~~~~~~~~
diff --git a/doc/devel/modules.md b/doc/devel/modules.md
deleted file mode 100644 (file)
index 45e84d7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# JPF Runtime Modules #
-
-JPF is partitioned into separate projects that all follow the same directory layout and build process. Modules can be distributed as source or binary distributions. Binary distributions are just slices through the directory tree of a source distribution that preserve the permanent build artifact, i.e. both distribution forms are runtime-compatible.
-
-![Figure: JPF Modules](../graphics/jpf-project.svg){align=center width=750}
-The main artifacts are the *.jar files created and stored in the `build` directory. We can divide this into classes that are executed by the host VM (i.e. have to be in JPF's `native_classpath` setting), and classes that are executed by JPF itself (i.e. have to be in JPF's `classpath` setting). The first category includes [listeners](listener) and [native peers](mji), the second one model classes (compiled from `src/classes`) and annotations, i.e. the system under test code.
-
-The build process is [Ant](http://ant.apache.org/) based, which means every source distribution comes with a build.xml script that implements the basic build targets `clean`, `compile`, `build` and `test`.
-
-We do not include required 3rd party runtime and build libraries in the project distributions.
-The `compile` Ant target uses the standard `javac` command which requires a full JDK installation. `test` generally executes a JUnit based regression test suite. Both JUnit and Ant libraries are also need to be installed.
-
-<included in the jpf-core distribution, which also contains the minimal RunAnt.jar executable jar which can be distributed with other JPF projects to use the jpf-core provided 3rd party build tools.>
-
-<The `lib` directory contains 3rd party libraries that are required at runtime of the project (like bcel.jar in jpf-core).>
-
-<tools contains programs and libraries that are used by the build process (like ant.jar and junit.jar in jpf-core).>
-
-For convenience reasons, JPF modules come with corresponding NetBeans and Eclipse configurations, i.e. can be directly opened as projects within these IDEs.
-
diff --git a/doc/devel/partial_order_reduction.md b/doc/devel/partial_order_reduction.md
deleted file mode 100644 (file)
index 7077a48..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# On-the-fly Partial Order Reduction #
-
-The number of different scheduling combinations is the prevalent factor for the state space size of concurrent programs. Fortunately, for most practical purposes it is not necessary to explore all possible instruction interleavings for all threads. The number of scheduling induced states can be significantly reduced by grouping all instruction sequences in a thread that cannot have effects outside this thread itself, collapsing them into a single transition. This technique is called partial order reduction (POR), and typically results in more than 70% reduction of state spaces.
-
-JPF employs an on-the-fly POR that does not rely on user instrumentation or static analysis. JPF automatically determines at runtime which instructions have to be treated as state transition boundaries. If POR is enabled (configured via `vm.por` property), a forward request to the VM executes all instructions in the current thread until one of the following conditions is met:
-
- - the next instruction is scheduling relevant
- - the next instruction yields a "nondeterministic" result (i.e. simulates random value data acquisition)
-
-Detection of both conditions are delegated to the instruction object itself (`Instruction.execute()`), passing down information about the current VM execution state and threading context. If the instruction is a transition breaker, it creates a ChoiceGenerator and schedules itself for re-execution.
-
-~~~~~~~~ {.java}
-executeStep () {
-  ..
-  do {
-    if ((nextPc # executeInstruction()) #= pc) {
-      break;
-    } else {
-      pc = nextPc;
-    }
-    ..
-  } while (pc != null);
-  ..
-}
-~~~~~~~~
-
-Each bytecode instruction type corresponds to a concrete gov.nasa.jpf.Instruction subclass that determines scheduling relevance based on the following factors:
-
- * **Instruction Type** - due to the stack based nature of the JVM, only about 10% of the Java bytecode instructions are scheduling relevant, i.e. can have effects across thread boundaries. The interesting instructions include direct synchronization (`monitorEnter`, `monitorexit`, `invokeX` on synchronized methods), field access (`putX`, `getX`), array element access (`Xaload`, `Xastore`), and invoke calls of certain Thread (`start()`, `sleep()`, `yield()`, `join()`) and Object methods (`wait()`, `notify()`).
- * **Object Reachability** - besides direct synchronization instructions, field access is the major type of interaction between threads. However, not all putX / getX instructions have to be considered, only the ones referring to objects that are reachable by at least two threads can cause data races. While reachability analysis is an expensive operation, the VM already performs a similar task during garbage collection, which is extended to support POR.
- * **Thread and Lock Information** - even if the instruction type and the object reachability suggest scheduling relevance, there is no need to break the current transition in case there is no other runnable thread. In addition, lock acquisition and release (`monitorenter`, `monitorexit`) do not have to be considered as transition boundaries if there they happen recursively - only the first and the last lock operation can lead to rescheduling.
-
-![Figure 1: Scheduling Relevance Filters](../graphics/por-scheduling-relevance.svg){align=center width=650}
-
-While JPF uses these informations to automatically deduce scheduling relevance, there exist three mechanisms to explicitly control transition boundaries (i.e. potential thread interleavings)
-
- 1. `Attributor` - a configurable concrete class of this type is used by JPF during class loading to determine object, method and field attributes of selected classes and class sets. The most important attributes with respect to POR are method atomicity and scheduling relevance levels: (a) never relevant, (b) always scheduling relevant, (c) only relevant in the context of other runnables. (d) only relevant of top-level lock. The default Attributor executes all java code atomically, which is can be too aggressive (i.e. can cause `BlockedAtomicExceptions`).
-
- 2. `VMListener` - a listener can explicitly request a reschedule by calling `ThreadInfo.yield()` in response of a instruction execution notification.
-
- 3. `Verify` - a class that serves as an API to communicate between the test application and JPF, and contains `beginAtomic()`, `endAtomic()` functions to control thread interleaving
-
-The main effort of JPFs POR support relates to extending its precise mark and sweep collector. POR reachability is a subset of collector reachability, hence the mechanism piggybacks on the mark phase object traversal. It is complicated by the fact that certain reference chains exist only in the (hidden) VM implementation layer. For instance, every thread has a reference to its ThreadGroup, and the ThreadGroup objects in turn have references to all included threads, hence - from a garbage collection perspective - all threads within a group are mutually reachable. If the application under test does not use Java reflection and runtime queries like thread enumeration, POR reachability should follow accessibility rules as closely as possible. While JPF's POR does not yet support protected and private access modifiers, it includes a mechanism to specify that certain fields should not be used to promote POR reachability. This attribute is set via the configured Attributor at class load time.
-
-![Figure 2: Mark Phase of Reachability Analysis](../graphics/por-mark.svg){align=center width=460}
-
-With this mechanism, calculating POR reachability becomes a straight forward approach that is divided into two phases. Phase 1 non-recursively marks all objects of the root set (mostly static fields and thread stacks), recording the id of the referencing thread. In case an object is reachable from a static field, or from two threads, it's status is set to shared. Phase 2 recursively traverses all heap objects, propagating either a set shared status or the referencing thread id through all reference fields that are not marked as reachability firewalls. Again, if the traversal hits an object that is already marked as referenced by another thread, it promotes the object status to shared, and from there propagates the shared status instead of the thread id.
-
-To further reduce irrelevant context switches, JPF can check for lock protection to determine if a field access is scheduling relevant. If the property `vm.por.sync_detection` is set to true, JPF looks for potential lock candidates when analyzing `GET_x/SET_x` instructions. The policy of detecting lock candidates is configurable with the property `vm.por.fieldlockinfo.class`, the default `gov.nasa.jpf.jvm.StatisticFieldLockInfo` just defers the decision by recording the set of locks held when executing the field instruction, computing the set intersection at subsequent accesses. If the set does not get empty for a configurable number of field accesses, the field is marked as lock protected, and henceforth not treated as transition boundary. If however the set should afterwards become empty, a warning like
-
-~~~~~~~~ {.bash}
-Warning: unprotected field access of: Event@70.count in thread: "Thread-1" oldclassic.java:107
-   sync-detection assumed to be protected by: Event@70
-   found to be protected by: {}
-   >>> re-run with 'vm.por.sync_detection=false' or exclude field from checks <<<
-~~~~~~~~
-
-is issued, and the field access is again treated as transition breaker.
-
-The set of fields to be analyzed can be specified with the properties `vm.por.include_fields` and `vm.por.exclude_fields`. Per default, fields of system library classes are not analyzed (this is esp. useful to avoid context switches for global objects like `System.out`).
-
-Even with all these optimizations, some unwanted transition breakers are likely to remain. This is mostly due to two constraints:
-
- * JPF only considers reachability, not accessibility
- * write once, read multiple conditions cannot be detected a priori for fields that are not final, or inside immutable objects (like `java.lang.String`)
-
-Especially the last issue might be subject to further enhancements
diff --git a/doc/devel/report.md b/doc/devel/report.md
deleted file mode 100644 (file)
index aecfd6b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# The JPF Report API #
-The JPF report system consists of three major components: 
-
-  - the `Reporter`
-  - any number of format specific `Publisher` objects
-  - any number of tool-, property-, Publisher-specific `PublisherExtension` objects
-
-Here is the blueprint:
-
-![Figure: JPF Report System](../graphics/report.svg){align=center width=800}
-
-The `Reporter` is the data collector. It also manages and notifies `Publisher` extensions when a certain output phase is reached. The `Publishers` are the format (e.g. text, XML) specific output producers, the most prominent one being the `ConsolePublisher` (for normal, readable text output on consoles). `PublisherExtensions` can be registered for specific `Publishers` at startup time, e.g. from Listeners implementing properties or analysis modes such as `DeadlockAnalyzer`. This is so common that the `ListenerAdapter` actually implements all the required interface methods so that you just have to override the ones you are interested in.
-
-Configuration is quite easy, and involves only a handful of JPF properties that are all in the report category. The first property specifies the Reporter class itself, but is not likely to be redefined unless you have to implement different data collection modes.
-
-~~~~~~~~ {.bash}
-report.class=gov.nasa.jpf.report.Reporter
-~~~~~~~~
-
-The next setting specifies a list of Publisher instances to use, using symbolic names:
-
-~~~~~~~~ {.bash}
-report.publisher=console,xml
-~~~~~~~~
-
-Each of these symbolic names has to have a corresponding class name defined:
-
-~~~~~~~~ {.bash}
-report.console.class=gov.nasa.jpf.report.ConsolePublisher
-~~~~~~~~
-
-Finally, we have to specify for each symbolic publisher name and output phase what topics should be processed in which order, e.g.
-
-~~~~~~~~ {.bash}
-report.console.property_violation=error,trace,snapshot
-~~~~~~~~
-
-Again, the order of these topics matters, and gives you complete control over the report format. As usual, please refer to `defaults.properties` for default values.
-
-Publisher classes can have their own, additional properties. For instance, the `ConsolePublisher` implementation can be further configured with respect to the information that is included in traces (bytecodes, method names etc.), and to redirect output (file, socket). Please refer to the constructor of this class for further details.
-
-~~~~~~~~ {.bash}
-# save report to file
-report.console.file=My_JPF_report
-~~~~~~~~
-
-All of the involved core classes and interfaces reside in the `gov.nasa.jpf.report` package. The most common way to extend the system is to use your own `PublisherExtension` implementation, which involves two steps:
-
-  - implement the required phase and format specific methods
-  - register the extension for a specific Publisher class
-
-
-The `DeadlockAnalyzer` (which is a listener to analyze concurrency defects) can be used as an example of how to do this:
-
-~~~~~~~~ {.java}
-public class DeadlockAnalyzer extends ListenerAdapter {
-  ...
-  public DeadlockAnalyzer (Config config, JPF jpf){
-    jpf.addPublisherExtension(ConsolePublisher.class, this);  // (1)
-    ...
-  }
-  ...
-  public void publishPropertyViolation (Publisher publisher) { // (2)
-    PrintWriter pw = publisher.getOut();
-    publisher.publishTopicStart("thread ops " + publisher.getLastErrorId());
-    
-    ... // use 'pw' to generate the output
-  }
-}
-~~~~~~~~
diff --git a/doc/graphics/DFSListener.svg b/doc/graphics/DFSListener.svg
deleted file mode 100644 (file)
index 1684827..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="62 54 384 228" width="32pc" height="19pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2005-10-21 18:50:44 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id26_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id27_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id28_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id29_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id30_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id31_Graphic" filter="url(#Shadow)"/></g><g id="id26_Graphic"><path d="M 91.05 67 L 155.45 67 C 163.0676 67 169.25 71.704 169.25 77.5 C 169.25 83.296 163.0676 88 155.45 88 L 91.05 88 C 83.4324 88 77.25 83.296 77.25 77.5 C 77.25 71.704 83.4324 67 91.05 67" fill="white"/><path d="M 91.05 67 L 155.45 67 C 163.0676 67 169.25 71.704 169.25 77.5 C 169.25 83.296 163.0676 88 155.45 88 L 91.05 88 C 83.4324 88 77.25 83.296 77.25 77.5 C 77.25 71.704 83.4324 67 91.05 67" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id27_Graphic"><path d="M 352.55 67 L 416.95 67 C 424.5676 67 430.75 71.704 430.75 77.5 C 430.75 83.296 424.5676 88 416.95 88 L 352.55 88 C 344.9324 88 338.75 83.296 338.75 77.5 C 338.75 71.704 344.9324 67 352.55 67" fill="white"/><path d="M 352.55 67 L 416.95 67 C 424.5676 67 430.75 71.704 430.75 77.5 C 430.75 83.296 424.5676 88 416.95 88 L 352.55 88 C 344.9324 88 338.75 83.296 338.75 77.5 C 338.75 71.704 344.9324 67 352.55 67" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id28_Graphic"><path d="M 136.475 118 L 211.025 118 C 219.8432 118 227 122.704 227 128.5 C 227 134.296 219.8432 139 211.025 139 L 136.475 139 C 127.6568 139 120.5 134.296 120.5 128.5 C 120.5 122.704 127.6568 118 136.475 118" fill="white"/><path d="M 136.475 118 L 211.025 118 C 219.8432 118 227 122.704 227 128.5 C 227 134.296 219.8432 139 211.025 139 L 136.475 139 C 127.6568 139 120.5 134.296 120.5 128.5 C 120.5 122.704 127.6568 118 136.475 118" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id29_Graphic"><path d="M 231.1125 183 L 301.6375 183 C 309.9796 183 316.75 187.704 316.75 193.5 C 316.75 199.296 309.9796 204 301.6375 204 L 231.1125 204 C 222.7704 204 216 199.296 216 193.5 C 216 187.704 222.7704 183 231.1125 183" fill="white"/><path d="M 231.1125 183 L 301.6375 183 C 309.9796 183 316.75 187.704 316.75 193.5 C 316.75 199.296 309.9796 204 301.6375 204 L 231.1125 204 C 222.7704 204 216 199.296 216 193.5 C 216 187.704 222.7704 183 231.1125 183" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id30_Graphic"><path d="M 247.55 148.5 L 311.95 148.5 C 319.5676 148.5 325.75 153.204 325.75 159 C 325.75 164.796 319.5676 169.5 311.95 169.5 L 247.55 169.5 C 239.9324 169.5 233.75 164.796 233.75 159 C 233.75 153.204 239.9324 148.5 247.55 148.5" fill="white"/><path d="M 247.55 148.5 L 311.95 148.5 C 319.5676 148.5 325.75 153.204 325.75 159 C 325.75 164.796 319.5676 169.5 311.95 169.5 L 247.55 169.5 C 239.9324 169.5 233.75 164.796 233.75 159 C 233.75 153.204 239.9324 148.5 247.55 148.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id31_Graphic"><path d="M 202.55 231 L 284.45 231 C 294.1376 231 302 235.704 302 241.5 C 302 247.296 294.1376 252 284.45 252 L 202.55 252 C 192.8624 252 185 247.296 185 241.5 C 185 235.704 192.8624 231 202.55 231" fill="white"/><path d="M 202.55 231 L 284.45 231 C 294.1376 231 302 235.704 302 241.5 C 302 247.296 294.1376 252 284.45 252 L 202.55 252 C 192.8624 252 185 247.296 185 241.5 C 185 235.704 192.8624 231 202.55 231" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 131.82329 138.16666 C 132.88209 140.61086 134.72058 143.048855 135 145.5 C 135.27942 147.951145 134.72904 151.04185 133.5 152.875 C 132.27096 154.70815 129.874775 156.1667 127.625 156.5 C 125.375225 156.8333 121.604006 156.31236 120 154.875 C 118.395994 153.43764 117.02568 150.964375 118 147.875 C 118.33188 146.82268 119.04462 145.594735 119.94362 144.28092" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 300.2699 236.20079 C 302.39772 235.01331 304.5007 234.23864 306.654 232.638 C 308.8073 231.03736 312.13694 229.05675 313.191 226.596 C 314.24506 224.13525 314.7705 221.5729 312.979 217.872 C 312.15253 216.16467 310.59337 214.11944 308.80859 211.9702" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(89.5 71.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".25927734" y="10" textLength="68.481445">searchStarted</tspan></text><text transform="translate(349.5 70.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".203125" y="10" textLength="74.59375">searchFinished</tspan></text><text transform="translate(127 121.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="4.6135254" y="10" textLength="72.77295">stateAdvanced</tspan></text><text transform="translate(241 152.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".044433594" y="10" textLength="47.68994">propertyV</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="47.541016" y="10" textLength="32.41455">iolated</tspan></text><text transform="translate(224.5 187.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".31274414" y="10" textLength="84.37451">stateBacktracked</tspan></text><text transform="translate(194.5 234.125)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".203125" y="10" textLength="96.59375">searchConstraintHit</tspan></text><path d="M 168.67215 76.98571 L 180.57215 76.98571 L 190.47357 76.98571 C 195.94198 76.98571 200.375 81.41873 200.375 86.88714 L 200.375 106.1 L 200.375 108.1" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 226.33107 127.98571 L 238.23107 127.98571 L 272.23107 127.98571 C 277.75392 127.98571 282.23107 123.50856 282.23107 117.98571 L 282.23107 87.5 C 282.23107 81.977153 286.70823 77.5 292.23107 77.5 L 326.85 77.5 L 328.85 77.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 200.375 139 L 200.375 150.9 L 200.375 154.54757 C 200.375 156.56207 202.00807 158.19515 204.02257 158.19515 L 221.89 158.19515 L 223.89 158.19515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 325.17215 158.48571 L 337.07215 158.48571 L 375.7735 158.48571 C 381.29635 158.48571 385.7735 154.00856 385.7735 148.48571 L 385.7735 99.9 L 385.7735 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 316.11719 192.98571 L 328.01719 192.98571 L 388.22082 192.98571 C 393.74367 192.98571 398.22082 188.50856 398.22082 182.98571 L 398.22082 99.9 L 398.22082 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 301.26512 240.98571 L 313.16512 240.98571 L 400.5722 240.98571 C 406.09504 240.98571 410.5722 236.50856 410.5722 230.98571 L 410.5722 99.9 L 410.5722 97.9" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 173.23588 139 L 173.23588 150.9 L 173.23588 182.69515 C 173.23588 188.218 177.71303 192.69515 183.23588 192.69515 L 204.1438 192.69515 L 206.1438 192.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 146.75778 139 L 146.75778 150.9 L 146.75778 230.69515 C 146.75778 236.218 151.23493 240.69515 156.75778 240.69515 L 173.15087 240.69515 L 175.15087 240.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 242.93519 252 L 242.93519 263.9 L 242.93519 267.45 C 242.93519 269.41061 241.3458 271 239.38519 271 L 109 271 C 103.47715 271 99 266.52285 99 261 L 99 132.5183 C 99 129.854546 101.1594 127.69515 103.82315 127.69515 L 108.646305 127.69515 L 110.646305 127.69515" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 226.71194 203.16666 C 227.59954 205.40255 229.22284 207.77799 229.375 209.875 C 229.52716 211.97201 228.85404 214.12516 227.625 215.75 C 226.39596 217.37484 224.22894 219.08339 222 219.625 C 219.77106 220.16661 215.89567 220.14572 214.25 219 C 212.60433 217.85428 210.99047 215.69356 212.125 212.75 C 212.54779 211.65307 213.48253 210.31699 214.64302 208.87548" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/doc/graphics/app-types.svg b/doc/graphics/app-types.svg
deleted file mode 100644 (file)
index f845707..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="20 24 747 537" width="747pt" height="537pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2015-01-05 22:17:29 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 3 L 0 -3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="11" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="15" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-800" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="black"><g><path d="M 5.5999994 0 L 0 -2.0999998 L 0 2.0999998 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Times New Roman" font-size="20" panose-1="2 2 8 3 7 5 5 2 3 4" units-per-em="1000" underline-position="-108.88672" underline-thickness="95.214844" slope="0" x-height="456.54297" cap-height="662.10938" ascent="891.1133" descent="-216.3086" font-weight="bold"><font-face-src><font-face-name name="TimesNewRomanPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -2 4 4" markerWidth="4" markerHeight="4" color="black"><g><path d="M 1.6 0 L 0 -.6 L 0 .6 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>App Types</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id50_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id65_Graphic" filter="url(#Shadow)"/></g><g filter="url(#Shadow_2)"><path d="M 327.333 77.9986 L 474.333 77.9986 C 480.40813 77.9986 485.333 82.92347 485.333 88.9986 L 485.333 311.5916 C 485.333 317.66673 480.40813 322.5916 474.333 322.5916 L 327.333 322.5916 C 321.25787 322.5916 316.333 317.66673 316.333 311.5916 L 316.333 88.9986 C 316.333 82.92347 321.25787 77.9986 327.333 77.9986 Z" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g><g id="id50_Graphic"><path d="M 282.2563 114.6481 C 282.2563 109.43795 281.63467 108.79335 277.09383 103.6371 L 277.04586 103.58375 C 272.48103 98.3736 272.43356 98.3736 267.74881 98.3736 C 261.51097 98.3736 233.309 98.3736 233.309 98.3736 L 233.309 153.3736 L 282.2563 153.3736 L 282.2563 114.6481 Z" fill="white"/><path d="M 282.2563 114.6481 C 282.2563 109.43795 281.63467 108.79335 277.09383 103.6371 L 277.04586 103.58375 C 272.48103 98.3736 272.43356 98.3736 267.74881 98.3736 C 261.51097 98.3736 233.309 98.3736 233.309 98.3736 L 233.309 153.3736 L 282.2563 153.3736 L 282.2563 114.6481 Z M 282.2563 114.3797 C 282.2563 109.43795 282.20833 109.43795 272.43356 109.43795 L 272.43356 109.43795 C 272.43356 98.4275 272.43356 98.3736 268.03564 98.3736" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="31.2632" y1="385.317" x2="755.896" y2="385.317" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="16,9,1,9"/><line x1="300.567" y1="128.5" x2="506.433" y2="128.5" marker-end="url(#Arrow_Marker)" marker-start="url(#Arrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(118.333 406.626)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="133.21924">non-functional properties</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="110.08594"> unhandled exceptions</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="41.561523">     (incl. </tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="40.95996" y="37" textLength="73.95996">AssertionError)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="51" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="51" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="51" textLength="52.58838"> deadlocks</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="65" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="65" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="65" textLength="29.95459"> races</tspan></text><text transform="translate(118.333 318.229)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="119.8291">restricted choice types</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="111.91211"> scheduling sequences</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="88.04297"> java.util.Random </tspan></text><text transform="translate(118.333 478.959)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="107.572266">improved inspection</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="93.5376"> coverage statistics</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="97.22217"> exact object counts</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="52" textLength="78.87451"> execution costs</tspan></text><text transform="translate(36.33314 309.333) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="72.53174">constraints</tspan></text><text transform="translate(38.9582 487.959) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="40.86914">benefi</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="40.86914" y="15" textLength="11.6674805">ts</tspan></text><text transform="translate(527.5 202)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="152.81836">restricted application models</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="26.280762"> UML</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="37.952148" y="24" textLength="73.981445"> statemachines</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="151.620605"> does not run w/o JPF libraries </tspan></text><text transform="translate(118.666 200.667)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="72.12842">runtime costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="130.23291"> order of magnitude slower</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="38" textLength="109.430664"> state storage memory</tspan></text><text transform="translate(118.333 244.97)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="127.13379">standard library support</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="116.77832"> java.net, javax.swing, ..</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="151.01367">     (needs abstraction models) </tspan></text><text transform="translate(528.197 437.293)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="158.89307">functional (domain) properties</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="120.430664"> built-in into JPF libraries</tspan></text><text transform="translate(118.666 288.728)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="160.74072">functional property impl. costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="123.49756"> listeners, MJI knowledge</tspan></text><text transform="translate(528.197 467.96)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="6.7192383">fl</tspan><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="6.7192383" y="10" textLength="94.166016">exible state space</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="73.36914"> domain specifi</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="85.44336" y="24" textLength="45.853027">c choices</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="63.572266">     (e.g. UML</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="63.169434" y="37" textLength="91.58789"> &quot;enabling events&quot;)</tspan></text><text transform="translate(528.864 511.294)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="163.80762">runtime costs &amp; library support</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="149.80518"> usually not a problem, domain</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="37" textLength="147.96289">     libs can control state space</tspan></text><text transform="translate(142 114.334)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="57.481445">runs on any</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="23" textLength="22">JVM</tspan></text><text transform="translate(597.018 112.38)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="44.63379">runs only</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="23" textLength="50.746094">under JPF</tspan></text><text transform="translate(528.197 406.626)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="102.066895">low modeling costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="165.08594"> statemachine w/o layout hassle,..</tspan></text><text transform="translate(527.833 247.333)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="131.40918">initial domain impl. costs</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="12.074219" y="24" textLength="126.55371"> domain libs can be tricky </tspan></text><text transform="translate(408 85.8125)" fill="black"><tspan font-family="Lucida Grande" font-size="11" font-weight="500" x="0" y="11" textLength="65.5542">&quot;sweet spot&quot;</tspan></text><text transform="translate(345.41 172.334)" fill="red"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="red" x="0" y="10" textLength="93.51074">annotate program</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="24" textLength="67.251465"> requirements</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="38" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="38" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="38" textLength="89.86914"> sequences (UML)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="52" textLength="79.46533"> contracts (PbC)</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="66" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="66" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="66" textLength="26.286133"> tests</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="79" textLength="23.22461">    …</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="92" textLength="3.0561523"> </tspan></text><text transform="translate(345.41 259.291)" fill="red"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="red" x="0" y="10" textLength="87.41992">analyze program</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="24" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="24" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="24" textLength="72.13379"> symbolic exec</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="38" textLength="15.280762">     </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="15.280762" y="38" textLength="11">→</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="26.280762" y="38" textLength="45.251465"> test data</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="0" y="52" textLength="6.1123047">  </tspan><tspan font-family="Lucida Grande" font-size="11" font-weight="500" fill="red" x="6.1123047" y="52" textLength="5.961914">■</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="red" x="12.074219" y="52" textLength="105.77295"> thread safety / races </tspan></text><path d="M 443.077 271.319 C 448.50012 269.28287 455.12626 268.07605 459.348 265.21 C 463.56974 262.34395 467.8014 258.03911 468.41 254.121 C 469.0186 250.20289 466.9996 245.38813 463 241.699 C 460.3534 239.25783 455.78244 237.2113 451.19748 235.16785" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(241.566 140.124)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="29.453125">*.class</tspan></text><g id="id65_Graphic"><path d="M 424.2383 117.1085 C 424.2383 111.89835 423.61667 111.25375 419.07583 106.0975 L 419.02786 106.04415 C 414.46303 100.834 414.41556 100.834 409.7308 100.834 C 403.49297 100.834 375.291 100.834 375.291 100.834 L 375.291 155.834 L 424.2383 155.834 L 424.2383 117.1085 Z" fill="white"/><path d="M 424.2383 117.1085 C 424.2383 111.89835 423.61667 111.25375 419.07583 106.0975 L 419.02786 106.04415 C 414.46303 100.834 414.41556 100.834 409.7308 100.834 C 403.49297 100.834 375.291 100.834 375.291 100.834 L 375.291 155.834 L 424.2383 155.834 L 424.2383 117.1085 Z M 424.2383 116.8401 C 424.2383 111.89835 424.19033 111.89835 414.41556 111.89835 L 414.41556 111.89835 C 414.41556 100.8879 414.41556 100.834 410.01764 100.834" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(385.548 142.585)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="25.014648">*.java</tspan></text><text transform="translate(381.548 115.758)" fill="blue"><tspan font-family="Times New Roman" font-size="20" font-weight="bold" fill="blue" x="0" y="18" textLength="33.046875">@V</tspan></text><path d="M 574.3423 117.1085 C 574.3423 111.89835 573.72067 111.25375 569.17983 106.0975 L 569.13186 106.04415 C 564.56703 100.834 564.51956 100.834 559.8348 100.834 C 553.59697 100.834 525.395 100.834 525.395 100.834 L 525.395 155.834 L 574.3423 155.834 L 574.3423 117.1085 Z" fill="white"/><path d="M 574.3423 117.1085 C 574.3423 111.89835 573.72067 111.25375 569.17983 106.0975 L 569.13186 106.04415 C 564.56703 100.834 564.51956 100.834 559.8348 100.834 C 553.59697 100.834 525.395 100.834 525.395 100.834 L 525.395 155.834 L 574.3423 155.834 L 574.3423 117.1085 Z M 574.3423 116.8401 C 574.3423 111.89835 574.29433 111.89835 564.51956 111.89835 L 564.51956 111.89835 C 564.51956 100.8879 564.51956 100.834 560.12164 100.834" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="543.737" cy="113.0895" rx="5.3750086" ry="4.0625065" fill="yellow"/><ellipse cx="543.737" cy="113.0895" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="556.987" cy="126.2145" rx="5.3750086" ry="4.0625065" fill="red"/><ellipse cx="556.987" cy="126.2145" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><ellipse cx="538.987" cy="135.2145" rx="5.3750086" ry="4.0625065" fill="blue"/><ellipse cx="538.987" cy="135.2145" rx="5.3750086" ry="4.0625065" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 549.51266 113.920245 C 550.629 114.080814 551.84554 113.92592 552.862 114.402 C 553.87846 114.87808 555.03463 115.563874 555.612 116.777 C 555.80122 117.17458 555.9176 117.662774 555.9969 118.19702" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 559.38672 130.37215 C 560.37838 132.09026 562.65776 134.17099 562.362 135.527 C 562.06624 136.88301 560.5531 138.39227 557.612 138.509 C 555.40905 138.596435 551.6817 137.6995 548.14292 136.92421" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 538.68525 130.65814 C 538.5775 129.031255 537.41597 126.75709 538.362 125.777 C 539.30803 124.79691 542.22674 124.81438 544.362 124.777 C 545.42796 124.75834 546.5616 124.8872 547.71222 125.05311" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(535.842 142.467)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="0" y="10" textLength="25.014648">*.java</tspan></text><text transform="translate(198.618 42.3331)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="88.374023">JPF unaware</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text><text transform="translate(354.033 33.4506)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="84.22119">JPF enabled</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text><text transform="translate(498.368 43.1018)" fill="black"><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="15" textLength="101.74072">JPF dependent</tspan><tspan font-family="Helvetica" font-size="15" font-style="italic" font-weight="500" x="0" y="33" textLength="63.354492">programs</tspan></text></g></g></svg>
diff --git a/doc/graphics/attributes.svg b/doc/graphics/attributes.svg
deleted file mode 100644 (file)
index 2aa20a4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="98 7 445 412" width="445pt" height="412pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-16 18:21:11 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".75079507"/><feOffset in="blur" result="offset" dx=".5" dy=".5"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><filter id="Shadow_3" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".75079507"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier New" font-size="9" panose-1="2 7 6 9 2 2 5 2 4 4" units-per-em="1000" underline-position="-232.91016" underline-thickness="100.097656" slope="0" x-height="443.35938" cap-height="591.79688" ascent="832.51953" descent="-300.29297" font-weight="bold"><font-face-src><font-face-name name="CourierNewPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="black"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledBall_Marker" viewBox="-4 -3 5 6" markerWidth="5" markerHeight="6" color="black"><g><circle cx="-1.4999993" cy="0" r="1.4999987" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier New" font-size="10" panose-1="2 7 6 9 2 2 5 2 4 4" units-per-em="1000" underline-position="-232.91016" underline-thickness="100.097656" slope="0" x-height="443.35938" cap-height="591.79688" ascent="832.51953" descent="-300.29297" font-weight="bold"><font-face-src><font-face-name name="CourierNewPS-BoldMT"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-6 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M -4.8000002 0 L 0 1.8000001 L 0 -1.8000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1090.9091" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="#404040"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledBall_Marker_2" viewBox="-4 -3 5 6" markerWidth="5" markerHeight="6" color="#404040"><g><circle cx="-1.4999993" cy="0" r="1.4999987" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 129.05398 137.779 L 521.01013 137.779 C 526.53298 137.779 531.01013 142.25615 531.01013 147.779 C 531.01013 147.78732 531.01012 147.795646 531.0101 147.80397 L 530.5015 351.50493 C 530.4877 357.02776 525.99938 361.49372 520.47655 361.47993 C 520.47598 361.47993 520.4754 361.47993 520.47483 361.47992 L 319.923 360.94463 C 314.40018 360.92988 309.935 356.4408 309.94973 350.91797 C 309.94984 350.8784 309.95018 350.83881 309.95075 350.79924 L 310.80437 292.10691 C 310.88469 286.58465 306.47312 282.04286 300.95085 281.96255 C 300.923 281.96214 300.89516 281.96185 300.86732 281.96168 L 130.49925 280.90729 C 125.04834 280.87355 120.62861 276.48048 120.56189 271.02987 L 119.05473 147.9014 C 118.98713 142.37896 123.40915 137.84735 128.93158 137.77975 C 128.97238 137.77925 129.01318 137.779 129.05398 137.779 Z" fill="#fcffec"/><path d="M 129.05398 137.779 L 521.01013 137.779 C 526.53298 137.779 531.01013 142.25615 531.01013 147.779 C 531.01013 147.78732 531.01012 147.795646 531.0101 147.80397 L 530.5015 351.50493 C 530.4877 357.02776 525.99938 361.49372 520.47655 361.47993 C 520.47598 361.47993 520.4754 361.47993 520.47483 361.47992 L 319.923 360.94463 C 314.40018 360.92988 309.935 356.4408 309.94973 350.91797 C 309.94984 350.8784 309.95018 350.83881 309.95075 350.79924 L 310.80437 292.10691 C 310.88469 286.58465 306.47312 282.04286 300.95085 281.96255 C 300.923 281.96214 300.89516 281.96185 300.86732 281.96168 L 130.49925 280.90729 C 125.04834 280.87355 120.62861 276.48048 120.56189 271.02987 L 119.05473 147.9014 C 118.98713 142.37896 123.40915 137.84735 128.93158 137.77975 C 128.97238 137.77925 129.01318 137.779 129.05398 137.779 Z" stroke="#dabc2a" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="335.637" y="278.727" width="102.191" height="50.5717" fill="#faffc4"/><rect x="335.637" y="278.727" width="102.191" height="50.5717" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow)"><rect x="335.805" y="149.616" width="102.191" height="119.14" fill="#faffc4"/><rect x="335.805" y="149.616" width="102.191" height="119.14" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow)"><rect x="131.795" y="149.616" width="97.7571" height="95.5241" fill="#faffc4"/><rect x="131.795" y="149.616" width="97.7571" height="95.5241" stroke="#ffc189" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 119.83489 292.59206 L 291.39527 293.14156 C 296.91809 293.15925 301.38088 297.65072 301.36319 303.17354 C 301.36314 303.18956 301.36305 303.2056 301.36292 303.22162 L 300.91446 359.19774 C 300.87032 364.707 305.2906 369.21415 310.79969 369.2772 L 430.69996 370.6495 C 436.17774 370.7122 440.58542 375.17053 440.58552 380.64867 L 440.58582 397.60582 C 440.58592 403.12867 436.10885 407.6059 430.586 407.606 C 430.58594 407.606 430.58588 407.606 430.58582 407.606 L 120.528715 407.606 C 115.03568 407.606 110.57097 403.17527 110.52901 397.6824 L 109.80315 302.6684 C 109.76096 297.14571 114.20378 292.63449 119.72647 292.5923 C 119.76261 292.59202 119.79875 292.59194 119.83489 292.59206 Z" fill="#e5ffe3"/><path d="M 119.83489 292.59206 L 291.39527 293.14156 C 296.91809 293.15925 301.38088 297.65072 301.36319 303.17354 C 301.36314 303.18956 301.36305 303.2056 301.36292 303.22162 L 300.91446 359.19774 C 300.87032 364.707 305.2906 369.21415 310.79969 369.2772 L 430.69996 370.6495 C 436.17774 370.7122 440.58542 375.17053 440.58552 380.64867 L 440.58582 397.60582 C 440.58592 403.12867 436.10885 407.6059 430.586 407.606 C 430.58594 407.606 430.58588 407.606 430.58582 407.606 L 120.528715 407.606 C 115.03568 407.606 110.57097 403.17527 110.52901 397.6824 L 109.80315 302.6684 C 109.76096 297.14571 114.20378 292.63449 119.72647 292.5923 C 119.76261 292.59202 119.79875 292.59194 119.83489 292.59206 Z" stroke="#0e9319" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="337.865" y="68.4215" width="102.191" height="60" fill="white"/><rect x="337.865" y="68.4215" width="102.191" height="60" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 68.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="77.808594">dup(), push(), pop(), ..</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="15.984375">------</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="28" textLength="70.253906">getOperandAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="38" textLength="82.703125">setOperandAttr(idx,obj)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="48" textLength="58.246094">getLocalAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="58" textLength="70.695312">setLocalAttr(idx,obj)</tspan></text><rect x="337.865" y="28.4215" width="102.191" height="40" fill="white"/><rect x="337.865" y="28.4215" width="102.191" height="40" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 28.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="35.570312">int[] locals</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="58.6875">Object[] localAttr</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="48.476562">int[] operands</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="38" textLength="71.59375">Object[] operandAttr</tspan></text><rect x="337.865" y="18.4215" width="102.191" height="10" fill="white"/><rect x="337.865" y="18.4215" width="102.191" height="10" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(342.865 18.4215)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="23.415812" y="8" textLength="45.359375">StackFrame</tspan></text><rect x="133.561" y="59.0283" width="102.191" height="70" fill="white"/><rect x="133.561" y="59.0283" width="102.191" height="70" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 59.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="25.351562">getIntV</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="24.761719" y="8" textLength="41.792969">alue(idx), ...</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="24.902344">setIntV</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="24.3125" y="18" textLength="50.23828">alue(idx, v), ...</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="15.984375">------</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="38" textLength="56.460938">getFieldAttr(idx)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="48" textLength="68.910156">setFieldAttr(idx,obj)</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="58" textLength="52.015625">getObjectAttr()</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" fill="blue" x="0" y="68" textLength="62.242188">setObjectAttr(obj)</tspan></text><rect x="133.561" y="29.0283" width="102.191" height="30" fill="white"/><rect x="133.561" y="29.0283" width="102.191" height="30" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 29.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="8" textLength="38.242188">int[] values</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="18" textLength="33.789062">Object[] fi</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="33.789062" y="18" textLength="27.121094">eldAttrs</tspan><tspan font-family="Helvetica" font-size="8" font-weight="500" x="0" y="28" textLength="59.13672">Object objectAttr</tspan></text><rect x="133.561" y="19.0283" width="102.191" height="10" fill="white"/><rect x="133.561" y="19.0283" width="102.191" height="10" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(138.561 19.0283)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="34.536906" y="8" textLength="23.117188">Fields</tspan></text><rect x="350.285" y="163.457" width="75.3187" height="100" fill="white"/><rect x="350.285" y="163.457" width="75.3187" height="100" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="330.498" y1="193.894" x2="425.604" y2="193.894" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="387.872" y1="153.139" x2="387.872" y2="263.946" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="353.396" y="167.278" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="167.278" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="167.048" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="167.048" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="178.857" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="178.857" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="178.627" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="178.627" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="353.396" y="199.952" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="199.952" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="199.722" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="199.722" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="211.531" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="211.531" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="211.301" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="211.301" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.396" y="223.11" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.396" y="223.11" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.198" y="222.88" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.198" y="222.88" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(335.377 190.062) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="23.009766">locals</tspan></text><text transform="translate(355.071 149.616)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="26.015625">values</tspan></text><text transform="translate(393.961 149.616)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.019531">attributes</tspan></text><text transform="translate(335.474 236.5) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.529297">operands</tspan></text><text transform="translate(309.594 187.863)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="18.505371">slots</tspan></text><rect x="144.642" y="183.546" width="75.3187" height="55.3838" fill="white"/><rect x="144.642" y="183.546" width="75.3187" height="55.3838" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="182.229" y1="173.228" x2="182.229" y2="239.159" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="147.753" y="187.367" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="187.367" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="187.137" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="187.137" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="147.753" y="198.946" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="198.946" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="198.716" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="198.716" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="147.753" y="211.041" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="211.041" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="210.811" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="210.811" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="147.753" y="222.62" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="147.753" y="222.62" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="184.555" y="222.39" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.555" y="222.39" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(134.303 169.705)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">fi</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" x="4.5" y="9" textLength="41.02295">eld-values</tspan></text><text transform="translate(188.318 169.705)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="37.019531">attributes</tspan></text><line x1="234.498" y1="231.537" x2="322.887" y2="231.537" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="329.357" y1="206.886" x2="240.379" y2="206.886" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259.457 194.858)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="43.20703">putfield</tspan></text><path d="M 428.964 210.165 L 447.019 210.165 L 447.019 228.737 L 435.664 228.737" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259.457 221.198)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="43.20703">getfield</tspan></text><text transform="translate(449.973 209.928)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="16.202637">dup</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 428.169 168.156 L 497.385 168.156 L 497.385 237.983 L 434.869 237.983" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(500.669 202.849)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="27.004395">iload</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 429.803 200.798 L 456.803 200.798 L 456.803 180.798 L 434.503 180.798" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(458.813 182.982)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="32.405273">istore</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><g filter="url(#Shadow_3)"><rect x="353.166" y="236.151" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.166" y="236.151" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="389.968" y="235.921" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="389.968" y="235.921" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><rect x="350.674" y="286.352" width="75.3187" height="34.5028" fill="white"/><rect x="350.674" y="286.352" width="75.3187" height="34.5028" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><rect x="353.785" y="290.173" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.785" y="290.173" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.587" y="289.943" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.587" y="289.943" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="353.785" y="301.752" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="353.785" y="301.752" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="390.587" y="301.522" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="390.587" y="301.522" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 428.734 249.545 L 489.176 249.545 L 489.176 306.698 L 434.116 306.698" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_3)"><rect x="352.936" y="248.531" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="352.936" y="248.531" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_3)"><rect x="389.738" y="248.301" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="389.738" y="248.301" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(454.692 309.299)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="70.211426">invokevirtual</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><path d="M 428.603 291.278 L 446.659 291.278 L 446.659 259.189 L 434.503 259.189" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(448.227 265.618)" fill="black"><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="7" textLength="32.405273">return</tspan><tspan font-family="Courier New" font-size="9" font-weight="bold" x="0" y="17" textLength="10.801758">..</tspan></text><g filter="url(#Shadow)"><rect x="214.377" y="301.379" width="54" height="34" fill="white"/><rect x="214.377" y="301.379" width="54" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(219.377 308.379)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="6" y="8" textLength="32">attribute</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="10.220703" y="18" textLength="23.558594">object</tspan></text></g><path d="M 199.193 249.815 L 199.193 318.925 L 207.97754 318.8113" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 406.74574 294.90896 L 406.242 315.583 L 272.50995 315.01889" marker-end="url(#FilledArrow_Marker_2)" marker-start="url(#FilledBall_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(118.282 316.108)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="72.01172">setAttr(i,o)</tspan></text><text transform="translate(142.52 386.429)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="60.009766">getAttr(i)</tspan></text><g filter="url(#Shadow)"><rect x="208.685" y="363.774" width="65" height="34" fill="white"/><rect x="208.685" y="363.774" width="65" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(213.685 365.774)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="8" textLength="33.34375">- listener</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="18" textLength="46.21875">- Instruction</tspan><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="0" y="28" textLength="47.128906">- native peer</tspan></text></g><path d="M 201.48924 382.13757 L 191.346 382.486 L 191.55037 253.65499" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 280.88496 380.90578 L 403.869 381.314 L 403.869 332.244" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="241.23884" y1="363.274" x2="241.30251" y2="342.57897" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><text transform="translate(280.538 386.363)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="66.010742">get?Attr(i)</tspan></text><text transform="translate(362.525 383.486)" fill="blue"><tspan font-family="Courier New" font-size="10" font-weight="bold" fill="blue" x="0" y="8" textLength="78.012695">set?Attr(i,o)</tspan></text><text transform="translate(250.716 143.057)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x=".4946289" y="10" textLength="44.010742">JPF core</tspan></text><text transform="translate(123.34 347.446)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="14.221924" y="10" textLength="19.556152">JPF</tspan><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x=".45581055" y="23" textLength="47.08838">extension</tspan></text><text transform="translate(257.781 101.477)" fill="blue"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="blue" x=".25878906" y="10" textLength="38.911133">attribute </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="blue" x="38.623047" y="10" textLength="16.118164">API</tspan></text><g filter="url(#Shadow_3)"><rect x="184.386" y="157.024" width="31.437" height="7.22235" fill="#e6e6e6"/><rect x="184.386" y="157.024" width="31.437" height="7.22235" stroke="#646464" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(140.259 155.826)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="40.016602">object-attr</tspan></text><line x1="342.24" y1="282.597" x2="342.24" y2="275.551" marker-end="url(#FilledArrow_Marker_4)" marker-start="url(#FilledBall_Marker_2)" stroke="#404040" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="363.056" y="337.39" width="77" height="16.4457" fill="white" fill-opacity=".76"/><rect x="363.056" y="337.39" width="77" height="16.4457" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(368.056 341.61285)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="12.833984" y="8" textLength="41.332031">ThreadInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="156.551" y="257.852" width="77" height="16.4457" fill="white" fill-opacity=".76"/><rect x="156.551" y="257.852" width="77" height="16.4457" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(161.551 261.07485)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="bold" x="10.609375" y="8" textLength="45.78125">ElementInfo</tspan></text></g></g></g></svg>
diff --git a/doc/graphics/bc-factory.svg b/doc/graphics/bc-factory.svg
deleted file mode 100644 (file)
index f69c951..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="-2 3 732 514" width="61pc" height="514pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2011-05-16 18:32:22 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="gray"><g><path d="M 6.3999996 0 L 0 0 M 0 -2.3999999 L 6.3999996 0 L 0 2.3999999" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Times New Roman" font-size="14" panose-1="2 2 5 3 5 4 5 9 3 4" units-per-em="1000" underline-position="-108.88672" underline-thickness="48.828125" slope="-1166.6423" x-height="430.17578" cap-height="662.10938" ascent="891.1133" descent="-216.3086" font-style="italic" font-weight="500"><font-face-src><font-face-name name="TimesNewRomanPS-ItalicMT"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><path d="M 487.518 259.358 L 549.518 259.358 C 558.35456 259.358 565.518 266.52144 565.518 275.358 L 565.518 341.358 C 565.518 350.19456 558.35456 357.358 549.518 357.358 L 487.518 357.358 C 478.68144 357.358 471.518 350.19456 471.518 341.358 L 471.518 275.358 C 471.518 266.52144 478.68144 259.358 487.518 259.358 Z" fill="#e6e6e6"/><path d="M 487.518 259.358 L 549.518 259.358 C 558.35456 259.358 565.518 266.52144 565.518 275.358 L 565.518 341.358 C 565.518 350.19456 558.35456 357.358 549.518 357.358 L 487.518 357.358 C 478.68144 357.358 471.518 350.19456 471.518 341.358 L 471.518 275.358 C 471.518 266.52144 478.68144 259.358 487.518 259.358 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 275.368 259.358 L 337.368 259.358 C 346.20456 259.358 353.368 266.52144 353.368 275.358 L 353.368 356.407 C 353.368 365.24356 346.20456 372.407 337.368 372.407 L 275.368 372.407 C 266.53144 372.407 259.368 365.24356 259.368 356.407 L 259.368 275.358 C 259.368 266.52144 266.53144 259.358 275.368 259.358 Z" fill="#e6e6e6"/><path d="M 275.368 259.358 L 337.368 259.358 C 346.20456 259.358 353.368 266.52144 353.368 275.358 L 353.368 356.407 C 353.368 365.24356 346.20456 372.407 337.368 372.407 L 275.368 372.407 C 266.53144 372.407 259.368 365.24356 259.368 356.407 L 259.368 275.358 C 259.368 266.52144 266.53144 259.358 275.368 259.358 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 26.8252 54.5645 L 26.8252 19.3645 C 26.8252 16.9357 37.5772 14.9645 50.8252 14.9645 C 64.0732 14.9645 74.8252 16.9357 74.8252 19.3645 L 74.8252 54.5645 C 74.8252 56.9933 64.0732 58.9645 50.8252 58.9645 C 37.5772 58.9645 26.8252 56.9933 26.8252 54.5645" fill="white"/><path d="M 26.8252 54.5645 L 26.8252 19.3645 C 26.8252 16.9357 37.5772 14.9645 50.8252 14.9645 C 64.0732 14.9645 74.8252 16.9357 74.8252 19.3645 L 74.8252 54.5645 C 74.8252 56.9933 64.0732 58.9645 50.8252 58.9645 C 37.5772 58.9645 26.8252 56.9933 26.8252 54.5645 M 26.8252 19.3645 C 26.8252 21.7933 37.5772 23.7645 50.8252 23.7645 C 64.0732 23.7645 74.8252 21.7933 74.8252 19.3645" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(31.8252 32.1645)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="1.328125" y="11" textLength="35.34375">*.class</tspan></text><rect x="494.553" y="61.0215" width="121.415" height="28" fill="white"/><rect x="494.553" y="61.0215" width="121.415" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(499.553 61.0215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="494.553" y="35.0215" width="121.415" height="26" fill="white"/><rect x="494.553" y="35.0215" width="121.415" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(499.553 35.0215)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="30.96873" y="10" textLength="49.47754">«interface»</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.0346484" y="23" textLength="105.3457">InstructionFactory</tspan></text><rect x="639.695" y="200.846" width="61.7822" height="28" fill="white"/><rect x="639.695" y="200.846" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(644.695 207.846)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text><line x1="555.26" y1="152.712" x2="555.26028" y2="102.5215" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 304.67782 189.418 L 304.67782 182.418 L 304.67782 151.623 L 308.217 151.623 L 666.902 151.623 L 669.7412 151.623 L 669.7412 193.34685 L 669.7412 200.34685" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="515.096" y1="189.418" x2="515.93555" y2="151.623" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="352.606" y="107.24" width="121.415" height="14" fill="white"/><rect x="352.606" y="107.24" width="121.415" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.606 107.24)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="108.714844">Instruction execute()</tspan></text><rect x="352.606" y="93.2401" width="121.415" height="14" fill="white"/><rect x="352.606" y="93.2401" width="121.415" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(357.606 93.2401)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="24.708477" y="11" textLength="61.998047">Instruction</tspan></text><g filter="url(#Shadow)"><rect x="275.683" y="314.395" width="61.7822" height="28" fill="white"/><rect x="275.683" y="314.395" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.683 321.395)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.8901234" y="11" textLength="28.001953">IFEQ</tspan></text></g><g filter="url(#Shadow)"><rect x="485.885" y="314.395" width="61.7822" height="28" fill="white"/><rect x="485.885" y="314.395" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.885 321.395)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.8901234" y="11" textLength="28.001953">IFEQ</tspan></text></g><g filter="url(#Shadow)"><rect x="275.427" y="270.568" width="61.7822" height="28" fill="white"/><rect x="275.427" y="270.568" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(280.427 277.568)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text></g><g filter="url(#Shadow)"><rect x="485.885" y="270.857" width="61.7822" height="28" fill="white"/><rect x="485.885" y="270.857" width="61.7822" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.885 277.857)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="20.890123" y="11" textLength="10.001953">...</tspan></text></g><path d="M 246.11 247.41 L 245.412 327.791 L 265.2835 327.98724" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><line x1="245.776" y1="285.8723" x2="265.02941" y2="285.4575" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 578.975 247.41 L 578.337 328.532 L 558.06717 328.4869" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><line x1="578.68897" y1="283.77946" x2="558.06563" y2="284.1384" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/><path d="M 414.287 327.791 L 413.53368 157.12295 C 419.03363 157.09867 418.98507 146.09878 413.48513 146.12305 L 413.43488 134.73987" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="337.9652" y1="328.21897" x2="414.287" y2="327.791" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="485.385" y1="328.21" x2="414.287" y2="327.791" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(149.162 384.451)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="46.20752">execute</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="125.42041" y="10" textLength="39.606445"> (){..</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="151.82471">  cond = popCondition()</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="72.611816">  if (cond)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="138.62256">    return jumpTarget</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="39.606445">  else</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="158.42578">    return getNextInsn()</tspan></text><path d="M 329.824 76.4422 L 412.748 76.4422 L 412.87469 83.34177" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="216.085" y="82.7095" width="113.739" height="14" fill="white"/><rect x="216.085" y="82.7095" width="113.739" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 82.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="78.708984">setCode(code)</tspan></text><rect x="216.085" y="54.7095" width="113.739" height="28" fill="white"/><rect x="216.085" y="54.7095" width="113.739" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 54.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="36.011719">factory</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="91.38281">Instruction[] code</tspan></text><rect x="216.085" y="40.7095" width="113.739" height="14" fill="white"/><rect x="216.085" y="40.7095" width="113.739" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(221.085 40.7095)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.546258" y="11" textLength="64.646484">MethodInfo</tspan></text><line x1="329.824" y1="62.127" x2="484.653" y2="62.054543" marker-end="url(#StickArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="74.8252" y1="36.9645" x2="93.35158" y2="36.74587" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="337.7092" y1="284.6111" x2="485.385" y2="284.8139" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50.7243" y1="176.837" x2="717.844" y2="176.837" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="16,9,1,9"/><text transform="translate(53.112 183.541)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".23876953" y="12" textLength="31.875977">concr</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="31.595215" y="12" textLength="132.166016">ete execution semantics</tspan></text><text transform="translate(53.612 153.212)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".130859375" y="12" textLength="161.73828">abstract execution semantics</tspan></text><text transform="translate(153.46 299.483)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".25439453" y="12" textLength="31.875977">concr</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="31.61084" y="12" textLength="50.134766">ete value</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="14.182617" y="28" textLength="53.634766">execution</tspan></text><text transform="translate(592.455 317.551)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".20849609" y="12" textLength="83.58301">symbolic value</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="15.182617" y="28" textLength="53.634766">execution</tspan></text><text transform="translate(266.575 349.18)" fill="black"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" x=".13964844" y="12" textLength="79.720703">instruction set</tspan></text><text transform="translate(414.822 364.88)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="46.20752">execute</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="125.42041" y="10" textLength="33.005371">(){..</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="158.42578">  if (!firstStepInsn()){</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="250.84082">    setNextCG(new PCChoiceGenerator())</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="99.016113">    return this</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="19.803223">  }</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="224.43652">  popCondition() // not interested</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="88" textLength="211.23438">  cond = getCG().getNextChoice()</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="101" textLength="99.016113">  if (cond){...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="114" textLength="138.62256">    return jumpTarget</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="127" textLength="85.813965">  } else {...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="140" textLength="158.42578">    return getNextInsn()</tspan></text><text transform="translate(617.76 80.3873)" fill="red"><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="7.2963867" y="12" textLength="22.16211">per </tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="29.458496" y="11.753906" textLength="3.5"> </tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x="32.958496" y="12" textLength="49.745117">bytecode</tspan><tspan font-family="Times New Roman" font-size="14" font-style="italic" font-weight="500" fill="red" x=".091308594" y="28" textLength="89.817383">factory methods</tspan></text><rect x="232.381" y="215.418" width="139.537" height="28" fill="white"/><rect x="232.381" y="215.418" width="139.537" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(237.381 215.418)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="232.381" y="189.418" width="139.537" height="26" fill="white"/><rect x="232.381" y="189.418" width="139.537" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(237.381 189.418)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="7.3270938" y="10" textLength="16.123047">gov</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="22.712836" y="10" textLength="99.49707">.nasa.jpf.jvm.bytecode</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.0956484" y="23" textLength="105.3457">InstructionFactory</tspan></text><rect x="429.84" y="215.418" width="174" height="28" fill="white"/><rect x="429.84" y="215.418" width="174" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(434.84 215.418)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="99.375">Instruction ifeq(tgt)</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><rect x="429.84" y="189.418" width="174" height="26" fill="white"/><rect x="429.84" y="189.418" width="174" height="26" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(434.84 189.418)" fill="#404040"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="39.5708" y="10" textLength="16.123047">gov</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#404040" x="54.956543" y="10" textLength="69.472656">.nasa.jpf.symbc</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.6523438" y="23" textLength="158.69531">SymbolicInstructionFactory</tspan></text><text transform="translate(12.40741 223.195)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="79.21289">Instruction </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="79.21289" y="10" textLength="26.404297">ifeq</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="105.61719" y="10" textLength="112.21826">(int jumpTarget){</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="191.43115">  return new IFEQ(jumpTarget)</tspan></text><rect x="101.651" y="55.837" width="84.557" height="14" fill="white"/><rect x="101.651" y="55.837" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 55.837)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="10.2726406" y="11" textLength="54.01172">ClassInfo</tspan></text><rect x="101.651" y="29.149" width="84.557" height="14" fill="white"/><rect x="101.651" y="29.149" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 29.149)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="10.93182" y="11" textLength="52.69336">ClassFile</tspan></text><rect x="101.651" y="83.6054" width="84.557" height="14" fill="white"/><rect x="101.651" y="83.6054" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(106.651 83.6054)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="1.6095547" y="11" textLength="71.33789">CodeBuilder</tspan></text><line x1="215.602" y1="62.1806" x2="194.508" y2="62.1806" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="186.208" y1="90.6054" x2="207.785" y2="90.6054" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.01023" y1="43.149" x2="144.06628" y2="48.008652" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="143.92952" y1="69.837" x2="143.92953" y2="75.3054" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="345.178" y="20.3772" width="84.557" height="14" fill="white"/><rect x="345.178" y="20.3772" width="84.557" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(350.178 20.3772)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="18.285336" y="11" textLength="30.65625">Confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="48.941586" y="11" textLength="7.330078">g</tspan></text><path d="M 387.45665 34.3772 L 387.457 51.2746 L 338.124 51.2746" marker-end="url(#StickArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(435.518 12.0618)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="165.02686">vm.insn_factory.class=...</tspan></text></g></g></svg>
diff --git a/doc/graphics/cg-impl.svg b/doc/graphics/cg-impl.svg
deleted file mode 100644 (file)
index 07a14cb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="5 12 774 590" width="774pt" height="590pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 07:14:49 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="1176.0376"/><g><title>Layer 1</title><path d="M 624 341 L 640 341 L 640 441.1" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(42.3333 21.6667)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="129.62109">initNextTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="129.62109" y="11" textLength="43.20703">(){...</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="115.21875">  curCg = nextCg</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="108.01758">  nextCg = null</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="122.41992">  curCg.advance()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="144.02344">   ..setExecThread()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="36.00586">  ...</tspan></text><text transform="translate(19.7895 260)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="122.41992">executeTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="122.41992" y="11" textLength="36.00586">(){..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="172.82812">  isFirstStepInsn = true</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="158.42578">  while (pc != null) {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="237.63867">    nextPc = executeInstruction()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="208.83398">    if (ss.breakTransition())</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="79.21289">      break</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="57.609375">    else</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="122.41992">      pc = nextPc</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="123" textLength="194.43164">    isFirstStepInsn = false</tspan></text><text transform="translate(252.667 349.409)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="64.810547">execute()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="64.810547" y="11" textLength="21.603516">{..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="180.0293">  if (!ti.isFirstStepInsn</tspan><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="180.0293" y="25" textLength="14.402344">()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="194.43164" y="25" textLength="21.603516">) {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="180.0293">    ChoiceGenerator cg = </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="259.24219">          ..createMonitorEnterCG(..)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="144.02344">    if (cg != null){</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="252.04102">      ss.setNextChoiceGenerator(cg)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="194.43164">      return this // repeat</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="21.603516">  }</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="137" textLength="93.615234">  ei.lock(ti)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="151" textLength="165.62695">  return getNextPc(ti);</tspan></text><rect x="458.041" y="280.5" width="90" height="14" fill="white"/><rect x="458.041" y="280.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(463.041 280.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="50.021484">execute()</tspan></text><rect x="458.041" y="266.5" width="90" height="14" fill="white"/><rect x="458.041" y="266.5" width="90" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(463.041 266.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.0009766" y="11" textLength="61.998047">Instruction</tspan></text><rect x="254" y="65" width="152" height="42" fill="white"/><rect x="254" y="65" width="152" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 65)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="47.34375">initNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="46.904297" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="37.347656">breakT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.908203" y="25" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="140.05664">setNextChoiceGenerator()</tspan></text><rect x="254" y="37" width="152" height="28" fill="white"/><rect x="254" y="37" width="152" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 37)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="38.021484">nextCg</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="32.009766">curCg</tspan></text><rect x="254" y="23" width="152" height="14" fill="white"/><rect x="254" y="23" width="152" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(259 23)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="34.982422" y="11" textLength="72.035156">SystemState</tspan></text><rect x="547.541" y="60" width="113.459" height="28" fill="white"/><rect x="547.541" y="60" width="113.459" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(552.541 60)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan></text><rect x="547.541" y="46" width="113.459" height="14" fill="white"/><rect x="547.541" y="46" width="113.459" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(552.541 46)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.0498125" y="11" textLength="97.359375">ChoiceGenerator</tspan></text><rect x="472" y="153" width="101" height="14" fill="white"/><rect x="472" y="153" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 153)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="86.70117">getNextChoice()</tspan></text><rect x="472" y="139" width="101" height="14" fill="white"/><rect x="472" y="139" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 139)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="52.03711">threadSet</tspan></text><rect x="472" y="125" width="101" height="14" fill="white"/><rect x="472" y="125" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(477 125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.496094" y="11" textLength="58.007812">ThreadCG</tspan></text><rect x="596" y="153" width="101" height="14" fill="white"/><rect x="596" y="153" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 153)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="86.70117">getNextChoice()</tspan></text><rect x="596" y="139" width="101" height="14" fill="white"/><rect x="596" y="139" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 139)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="54.046875">doubleSet</tspan></text><rect x="596" y="125" width="101" height="14" fill="white"/><rect x="596" y="125" width="101" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(601 125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.167969" y="11" textLength="58.664062">DoubleCG</tspan></text><rect x="713.438" y="125" width="54" height="18" fill="white"/><rect x="713.438" y="125" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(718.438 127)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><rect x="495" y="190" width="54" height="18" fill="white"/><rect x="495" y="190" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(500 192)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><rect x="85.4035" y="207" width="118" height="42" fill="white"/><rect x="85.4035" y="207" width="118" height="42" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 207)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="49.359375">executeT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="48.919922" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="105.38086">executeInstruction()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="87.35156">isFirstStepInsn()</tspan></text><rect x="85.4035" y="193" width="118" height="14" fill="white"/><rect x="85.4035" y="193" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 193)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="64.04297">{pc, nextPc}</tspan></text><rect x="85.4035" y="179" width="118" height="14" fill="white"/><rect x="85.4035" y="179" width="118" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(90.4035 179)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="23.000977" y="11" textLength="61.998047">ThreadInfo</tspan></text><line x1="609.041" y1="112" x2="609.041" y2="101.5" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 521.57353 125 L 521 112 L 740.403 112 L 740.438 125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="646.4202" y1="125" x2="646.3708" y2="112" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="522" y1="190.257" x2="522" y2="179.757" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="366.5" y="327.5" width="90" height="18" fill="white"/><rect x="366.5" y="327.5" width="90" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(371.5 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.6699219" y="11" textLength="74.660156">MonitorEnter</tspan></text><rect x="553.5" y="327.5" width="68" height="18" fill="white"/><rect x="553.5" y="327.5" width="68" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(558.5 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="6.658203" y="11" textLength="44.683594">Invoke..</tspan></text><rect x="476.703" y="327.5" width="54" height="18" fill="white"/><rect x="476.703" y="327.5" width="54" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(481.703 329.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="16.999023" y="11" textLength="10.001953">...</tspan></text><line x1="503.5" y1="318.5" x2="503.5" y2="308" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 411.5 327.5 L 411.5 318.5 L 587.458 318.5 L 587.5 327.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="503.703" y1="327.5" x2="503.87076" y2="318.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="573.5" y="363.833" width="83" height="18" fill="white"/><rect x="573.5" y="363.833" width="83" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(578.5 365.833)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="4.1767578" y="11" textLength="64.646484">MethodInfo</tspan></text><rect x="591.5" y="399.833" width="83" height="18" fill="white"/><rect x="591.5" y="399.833" width="83" height="18" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(596.5 401.833)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="5.4804688" y="11" textLength="62.039062">NativePeer</tspan></text><text transform="translate(463.041 446)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="160.0957">e.g. JPF_gov_nasa_jpf_vm_V</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="159.43945" y="11" textLength="22.669922">erify</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="181.22461" y="11" textLength="91.39453">.getBoolean(env)</tspan></text><line x1="210" y1="469.665" x2="362" y2="469.665" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(35 434.665)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="bold" fill="red" x="0" y="11" textLength="43.32422">top half</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="43.32422" y="11" textLength="81.38672">: executed on fi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="124.71094" y="11" textLength="70.69922">rst invocation</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="208.78125">optionally sets next CG and reexecutes</tspan></text><text transform="translate(35 475.665)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="bold" fill="red" x="0" y="11" textLength="65.320312">bottom half</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="65.320312" y="11" textLength="124.722656">: executed on revisit (or</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="187.42969">if no CG created because of policy)</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="39" textLength="165.43945">does semantic action based on</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="53" textLength="102.703125">current CGs choice</tspan></text><line x1="585" y1="131" x2="586" y2="246" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(468 224)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="101.396484">scheduling choices</tspan></text><text transform="translate(601.5 224)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="127.41211">data acquisition choices</tspan></text><path d="M 700 163 L 747 163 L 747 546.1" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="406" y1="71" x2="537.641" y2="71" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 194 249 C 222 278.6667 258.6663 285.99975 307.333 289.333 C 352.12157 292.40069 408.50888 290.38684 448.14126 290.04641" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><circle cx="263.333" cy="171" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(261.933 164)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">1</tspan></text><circle cx="314.667" cy="277.333" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(313.267 270.333)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">2</tspan></text><circle cx="374.5" cy="207.333" r="8.000013" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(373.1 200.333)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="6.673828">3</tspan></text><line x1="426.041" y1="531.45" x2="585" y2="531.45" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><text transform="translate(424.333 511.333)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="39.363281">top half</tspan></text><text transform="translate(423.667 536.333)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="11" textLength="36.685547">bottom</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="0" y="25" textLength="19.347656">half</tspan></text><text transform="translate(465 466.95)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="194.43164">if (!ti.isFirstStepInsn()){</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="158.42578">  cg = new BooleanCG()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="223.23633">  ss.setNextChoiceGenerator(cg)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="53" textLength="194.43164">  env.repeatInvocation() ..</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="81" textLength="57.609375">} else {</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="95" textLength="216.03516">  cg = ss.getChoiceGenerator()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="109" textLength="288.04688">  return ((BooleanCG)cg).getNextChoice()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="123" textLength="7.201172">}</tspan></text><text transform="translate(56 126.333)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="bold" fill="blue" x="0" y="11" textLength="108.01758">breakTransition</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="108.01758" y="11" textLength="43.20703">(){...</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="165.62695">  return nextCg != null</tspan></text><path d="M 301.333 106 C 299.99966 155.3333 295.3337 164.6667 280.667 179 C 267.09314 192.2653 251.8064 204.10311 213.1948 210.54982" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 458.041 277.333 C 382.6786 281.99966 361.33353 214.0001 353 187.667 C 345.40257 163.6599 344.73164 148.240585 344.60825 115.9" marker-end="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/></g></g></svg>
diff --git a/doc/graphics/cg-motivation.svg b/doc/graphics/cg-motivation.svg
deleted file mode 100644 (file)
index e8c750c..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="36 72 668 428" width="668pt" height="428pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2010-02-22 05:27:10 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 0 M 0 3 L -8 0 L 0 -3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="12" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Lucida Grande" font-size="14" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><line x1="401.4" y1="354" x2="449.6" y2="354" marker-end="url(#StickArrow_Marker)" marker-start="url(#StickArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="425.5" y1="331" x2="425.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="440.5" y1="338" x2="440.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="410.5" y1="338" x2="410.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(412 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38085938" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.5" y="12" textLength="9.919922"> ±</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="17.419922" y="12" textLength="12.199219"> Δ</tspan></text><circle cx="425.5" cy="354" r="3.0000048" fill="white"/><circle cx="425.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="440.5" cy="354" r="3.0000048" fill="white"/><circle cx="440.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="410.5" cy="354" r="3.0000048" fill="white"/><circle cx="410.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.5215 365.55046)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="21.603516">.. </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="295.24805">double v = Verify.getDouble(&quot;velocity&quot;); </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="14.402344">..</tspan></text><text transform="translate(220.02 434.55)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="468.07617">velocity.class = gov.nasa.jpf.jvm.choice.DoubleThresholdGenerator</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="187.23047">velocity.threshold = 13250</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="144.02344">velocity.delta = 500</tspan></text><text transform="translate(132.175 372.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".020996094" y="13" textLength="93.95801">application code</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.13501" y="29" textLength="65.72998">(test driver)</tspan></text><text transform="translate(50 436)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="32.280518" y="13" textLength="27.459961">confi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="59.74048" y="13" textLength="50.59082">guration </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".49780273" y="29" textLength="123.55713">(e.g. mode property fi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="124.05493" y="29" textLength="14.447266">le)</tspan></text><path d="M 474.5 396 C 475.1666 401.49945 481.8328 409.25033 476.5 412.5 C 471.1672 415.74967 475.91332 414.91673 442.5 415.5 C 409.08668 416.08327 308.41342 414.83345 276 416 C 243.58658 417.16655 250.58307 418.91703 248 422.5 C 246.49657 424.5854 249.56637 427.63104 253.21663 430.79843" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(476.5 345.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".32714844" y="12" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.799805" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.473633" y="12" textLength="3.9960938">-</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="40.469727" y="12" textLength="68.203125">Δ, T, T+ Δ }</tspan></text><text transform="translate(77.73514 82.637407)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="136.822266">Verify.getBoolean()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="129.62109">Verify.getInt(0,4)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="180.0293">Verify.getDouble(1.0,1.5)</tspan></text><text transform="translate(267.733 84)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="82.376953">C = { true, false</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="82.376953" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(267.233 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="89.72461">C = { 0, 1, 2, 3, 4</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="89.72461" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(373.733 83.6349)" fill="red"><tspan font-family="Lucida Grande" font-size="14" font-weight="500" fill="red" x="0" y="14" textLength="10.698242">✓</tspan></text><text transform="translate(374.733 108.635)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x="0" y="14" textLength="8.551758">?</tspan></text><text transform="translate(404.733 111)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="279.48633">potentially large sets with lots of uninteresting values</tspan></text><text transform="translate(374.733 135.635)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x="0" y="14" textLength="17.103516">??</tspan></text><text transform="translate(404.733 138)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="22.68164">no fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="22.68164" y="11" textLength="166.08398">nite value set without heuristics</tspan></text><text transform="translate(267.233 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="13" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="29.683594" y="13" textLength="9.267578">∞</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="38.951172" y="13" textLength="7.6992188"> }</tspan></text><text transform="translate(214.675 327.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".3239746" y="13" textLength="144.35205">e.g. &quot;Threshold&quot; heuristic</tspan></text><path d="M 327 180.284 L 327 211.409 L 320 211.409 L 334 221.784 L 348 211.409 L 341 211.409 L 341 180.284 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202 247.12)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="63.86914" y="14" textLength="125.26172">Choice Generators</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="122.41211" y="31" textLength="8.1757812">+</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x=".09326172" y="48" textLength="35.765625">Confi</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="35.858887" y="48" textLength="217.04785">gurable Heuristic Choice Models</tspan></text><text transform="translate(411 238)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="169.42383">JPF internal object to store and </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="144.08203">enumerate a set of choices</tspan></text><text transform="translate(468 283)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="25.347656" y="11" textLength="96.720703">gurable classes to</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="182.09766">create ChoiceGenerator instances</tspan></text><rect x="107" y="225.12" width="140" height="43" fill="white"/><rect x="107" y="225.12" width="140" height="43" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 225.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="40" textLength="90.035156">getNextChoice() </tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="90.035156" y="40" textLength="12">→</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="102.035156" y="40" textLength="9.3339844"> x</tspan></text><rect x="107" y="211.12" width="140" height="14" fill="white"/><rect x="107" y="211.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 211.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="73.382812">choiceSet: {x}</tspan></text><rect x="107" y="197.12" width="140" height="14" fill="white"/><rect x="107" y="197.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 197.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.9833984" y="11" textLength="104.033203">xChoiceGenerator</tspan></text></g></g></svg>
diff --git a/doc/graphics/cg-ontology.svg b/doc/graphics/cg-ontology.svg
deleted file mode 100644 (file)
index fab55e3..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="131 133 625 388" width="625pt" height="388pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2010-02-22 02:58:46 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".48301078"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Courier" font-size="13" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id139_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id140_Graphic" filter="url(#Shadow)"/></g><path d="M 284.70481 177.8364 L 284.70481 177.8364 C 294.09105 185.10919 295.80434 198.61399 288.53156 208.00022 C 288.53156 208.00022 288.53156 208.00022 288.53156 208.00022 L 231.091 282.13285 C 223.81822 291.51909 210.31342 293.23238 200.92719 285.9596 L 200.92719 285.9596 C 191.54095 278.68681 189.82766 265.18201 197.10044 255.79578 L 254.541 181.66315 C 261.81378 172.27691 275.31858 170.56362 284.70481 177.8364 C 284.70481 177.8364 284.70481 177.8364 284.70481 177.8364 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 284.70481 177.8364 L 284.70481 177.8364 C 294.09105 185.10919 295.80434 198.61399 288.53156 208.00022 C 288.53156 208.00022 288.53156 208.00022 288.53156 208.00022 L 231.091 282.13285 C 223.81822 291.51909 210.31342 293.23238 200.92719 285.9596 L 200.92719 285.9596 C 191.54095 278.68681 189.82766 265.18201 197.10044 255.79578 L 254.541 181.66315 C 261.81378 172.27691 275.31858 170.56362 284.70481 177.8364 C 284.70481 177.8364 284.70481 177.8364 284.70481 177.8364 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id139_Graphic"><circle cx="269.28125" cy="195.78125" r="18.281279" fill="white"/><circle cx="269.28125" cy="195.78125" r="18.281279" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id140_Graphic"><circle cx="215.5" cy="267.5" r="15.500025" fill="white"/><circle cx="215.5" cy="267.5" r="15.500025" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="258.01217" y1="210.80888" x2="225.10027" y2="254.69777" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(145.432 221)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".19897461" y="13" textLength="7.940918">T</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="7.6638184" y="13" textLength="49.137207">ransition</tspan></text><rect x="231" y="217" width="75" height="11" fill="blue" fill-opacity=".14"/><rect x="231" y="217" width="75" height="11" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(253.562 187)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".3227539" y="13" textLength="30.354492">State</tspan></text><text transform="translate(312.5 213)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".21044922" y="14" textLength="43.579102">Choice</tspan></text><line x1="267" y1="144" x2="268.45463" y2="177.01808" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 205.51021 279.9999 L 183.932 307 L 183.932 307 L 183.932 307" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="224.25289" y1="280.89727" x2="240" y2="305" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="276.61163" y1="213.07815" x2="294.378" y2="255" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(360.562 248)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="116.74414">Scheduling Choice</tspan></text><text transform="translate(360.562 343)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="77.041016">Data Choice</tspan></text><text transform="translate(405.562 361)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="249.64062">boolean b = Verify.getBoolean();</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="335.45459">double d = Verify.getDouble(&quot;MyHeuristic&quot;);</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="15.602539">..</tspan></text><text transform="translate(405.562 268)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="171.62793">synchronized (..) {..}</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="70.211426">wait (..)</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="140.42285">x = mySharedObject</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="61" textLength="15.602539">..</tspan></text><text transform="translate(360.562 424)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="92.59961">Control Choice</tspan></text><text transform="translate(405.562 448)" fill="blue"><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="13" textLength="109.217773">if (&lt;cond&gt;) ..</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="29" textLength="210.63428">INVOKECG.setInvocations(..)</tspan><tspan font-family="Courier" font-size="13" font-weight="500" fill="blue" x="0" y="45" textLength="15.602539">..</tspan></text><path d="M 332.571 233.32 L 332.571 433.328 L 355.562 433.328" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="333.347" y1="256.576" x2="355.562" y2="256.576" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="332.571" y1="351.929" x2="354.787" y2="351.929" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/doc/graphics/cg-sequence.svg b/doc/graphics/cg-sequence.svg
deleted file mode 100644 (file)
index 5e0ff92..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="133 132 503 243" width="503pt" height="243pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2006-05-05 17:02:45 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation=".48301078"/><feOffset in="blur" result="offset" dx="1" dy="1"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="black"><g><path d="M 5.6000004 0 L 0 -2.1000001 L 0 2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="black"><g><path d="M 4.7999992 0 L 0 -1.7999997 L 0 1.7999997 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id4_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id5_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id22_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id7_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id17_Graphic" filter="url(#Shadow)"/></g><path d="M 237.89106 230.97335 L 237.89106 230.97335 C 243.97415 235.39297 245.32265 243.9071 240.90303 249.99018 C 240.90303 249.99018 240.90303 249.99018 240.90303 249.99018 L 213.52887 287.66748 C 209.10925 293.75057 200.59513 295.09907 194.51204 290.67945 L 194.51204 290.67945 C 188.42895 286.25983 187.08045 277.7457 191.50007 271.66262 L 218.87423 233.98532 C 223.29385 227.90223 231.80797 226.55373 237.89106 230.97335 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 237.89106 230.97335 L 237.89106 230.97335 C 243.97415 235.39297 245.32265 243.9071 240.90303 249.99018 C 240.90303 249.99018 240.90303 249.99018 240.90303 249.99018 L 213.52887 287.66748 C 209.10925 293.75057 200.59513 295.09907 194.51204 290.67945 L 194.51204 290.67945 C 188.42895 286.25983 187.08045 277.7457 191.50007 271.66262 L 218.87423 233.98532 C 223.29385 227.90223 231.80797 226.55373 237.89106 230.97335 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 197.99853 196.87463 L 197.99853 196.87463 C 203.38779 192.9742 210.91857 194.18114 214.819 199.5704 C 214.819 199.5704 214.819 199.5704 214.819 199.5704 L 240.80254 235.4721 C 244.70297 240.86136 243.49603 248.39214 238.10677 252.29257 L 238.10677 252.29257 C 232.71751 256.193 225.18673 254.98606 221.2863 249.5968 C 221.2863 249.5968 221.2863 249.5968 221.2863 249.5968 L 195.30276 213.6951 C 191.40233 208.30584 192.60927 200.77506 197.99853 196.87463 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 197.99853 196.87463 L 197.99853 196.87463 C 203.38779 192.9742 210.91857 194.18114 214.819 199.5704 C 214.819 199.5704 214.819 199.5704 214.819 199.5704 L 240.80254 235.4721 C 244.70297 240.86136 243.49603 248.39214 238.10677 252.29257 L 238.10677 252.29257 C 232.71751 256.193 225.18673 254.98606 221.2863 249.5968 C 221.2863 249.5968 221.2863 249.5968 221.2863 249.5968 L 195.30276 213.6951 C 191.40233 208.30584 192.60927 200.77506 197.99853 196.87463 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id4_Graphic"><circle cx="205.5" cy="207.5" r="10.500017" fill="white"/><circle cx="205.5" cy="207.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id5_Graphic"><circle cx="176.5" cy="241.5" r="10.500017" fill="white"/><circle cx="176.5" cy="241.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id22_Graphic"><circle cx="156.5" cy="280.5" r="10.500017" fill="white"/><circle cx="156.5" cy="280.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id7_Graphic"><circle cx="229.5" cy="240.5" r="10.500017" fill="white"/><circle cx="229.5" cy="240.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="198.36125" y1="215.86957" x2="183.63874" y2="233.13042" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="211.97076" y1="216.39733" x2="223.02918" y2="231.60271" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="171.47923" y1="251.2905" x2="161.52077" y2="270.7095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id17_Graphic"><circle cx="201.5" cy="280.5" r="10.500017" fill="white"/><circle cx="201.5" cy="280.5" r="10.500017" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><line x1="182.43751" y1="250.76253" x2="195.56247" y2="271.23748" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="223.19091" y1="249.51298" x2="207.80908" y2="271.48702" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="233.83421" y1="250.61316" x2="246" y2="279" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(255 275)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><line x1="197.32751" y1="290.68088" x2="189" y2="311" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="237.95824" y1="247.5337" x2="277" y2="280" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="205.49625" y1="290.75125" x2="213" y2="310" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(195 307)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(330 250)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="29.355469">get_fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.355469" y="11" textLength="16.013672">eld</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="39" textLength="74.039062">monitor_enter</tspan></text><text transform="translate(330 197)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="10.001953">...</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="29.355469">get_fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.355469" y="25" textLength="16.013672">eld</tspan></text><text transform="translate(330 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="74.039062">monitor_enter</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="10.001953">...</tspan></text><path d="M 312 246 L 397 246 C 404.73199 246 411 252.26801 411 260 L 411 282 C 411 289.73199 404.73199 296 397 296 L 312 296 C 304.26801 296 298 289.73199 298 282 L 298 260 C 298 252.26801 304.26801 246 312 246 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 246 L 397 246 C 404.73199 246 411 252.26801 411 260 L 411 282 C 411 289.73199 404.73199 296 397 296 L 312 296 C 304.26801 296 298 289.73199 298 282 L 298 260 C 298 252.26801 304.26801 246 312 246 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 312 179 L 397 179 C 404.73199 179 411 185.26801 411 193 L 411 215 C 411 222.73199 404.73199 229 397 229 L 312 229 C 304.26801 229 298 222.73199 298 215 L 298 193 C 298 185.26801 304.26801 179 312 179 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 179 L 397 179 C 404.73199 179 411 185.26801 411 193 L 411 215 C 411 222.73199 404.73199 229 397 229 L 312 229 C 304.26801 229 298 222.73199 298 215 L 298 193 C 298 185.26801 304.26801 179 312 179 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 312 314 L 397 314 C 404.73199 314 411 320.26801 411 328 L 411 350 C 411 357.73199 404.73199 364 397 364 L 312 364 C 304.26801 364 298 357.73199 298 350 L 298 328 C 298 320.26801 304.26801 314 312 314 Z" fill="#ffccc3" fill-opacity=".25"/><path d="M 312 314 L 397 314 C 404.73199 314 411 320.26801 411 328 L 411 350 C 411 357.73199 404.73199 364 397 364 L 312 364 C 304.26801 364 298 357.73199 298 350 L 298 328 C 298 320.26801 304.26801 314 312 314 Z" stroke="#ff97a0" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(460.266 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="106.61328">ChoiceGenerator</tspan></text><path d="M 386 218 L 456 218 L 456 224.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 456 246 L 456 255 L 387.7 255" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(301 193.5)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(310 201.5)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".27807617" y="10" textLength="2.4438477">j</tspan></text><text transform="translate(301 259.178)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(309 267.178)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="14.985352">j+1</tspan></text><text transform="translate(300 327.178)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".2241211" y="14" textLength="8.551758">T</tspan></text><text transform="translate(308 335.178)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="14.985352">j+2</tspan></text><path d="M 406 287 L 455 287 L 455 293.5" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 455 315 L 455 324 L 412.7 324" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(452 228)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="21">CG</tspan></text><text transform="translate(475.15 236)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="5.5">k</tspan></text><text transform="translate(452 297)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="21">CG</tspan></text><text transform="translate(475.15 305)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="2.4438477">l</tspan></text><text transform="translate(431 200)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="58.68164">setNextCG</tspan></text><text transform="translate(431 256)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="78.708984">getNextChoice</tspan></text><text transform="translate(323.5 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="8.551758">T</tspan><tspan font-family="Helvetica" font-size="14" font-weight="500" x="8.0390625" y="14" textLength="52.916992">ransition</tspan></text><text transform="translate(198.707 241.273)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(203.818 238.508)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(205.471 248.397)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(225.2 255.48)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(231.407 251.619)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(231.69 262.33)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(248.814 242.537)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(255.295 238.95)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">3</tspan></text><text transform="translate(255.578 249.661)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(223.631 231.98)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49804688" y="11" textLength="8.0039062">S</tspan></text><text transform="translate(231.712 236.938)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(513.826 231.676)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(518.798 228.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(520.589 238.389)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(529.688 231.676)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(535.248 228.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(536.451 238.389)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(506.378 228.326)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">{</tspan></text><text transform="translate(506.378 296.609)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">{</tspan></text><text transform="translate(559.536 228.326)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">}</tspan></text><text transform="translate(544.246 296.609)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".32910156" y="13" textLength="4.341797">}</tspan></text><text transform="translate(526.246 232.672)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(495.88 228.328)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".20410156" y="13" textLength="7.591797">=</tspan></text><text transform="translate(495.882 296.807)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".20410156" y="13" textLength="7.591797">=</tspan></text><text transform="translate(181.122 141)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="0" y="14" textLength="32.689453">State</tspan></text><path d="M 595.073 343 L 595.073 238.537 L 583.773 238.537" marker-end="url(#FilledArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(569.537 344.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="51.351562">backtrack</tspan></text><text transform="translate(570.537 218.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="45.36914">advance</tspan></text><text transform="translate(546.227 231.545)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(551.787 228.369)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">2</tspan></text><text transform="translate(552.99 238.258)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="4.5">k</tspan></text><text transform="translate(542.785 232.541)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(513.076 299.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="6">c</tspan></text><text transform="translate(518.048 296.75)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="5.005371">1</tspan></text><text transform="translate(519.839 306.639)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="1.9995117">l</tspan></text><text transform="translate(527.938 299.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(525.496 300.922)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".33300781" y="11" textLength="3.3339844">,</tspan></text><text transform="translate(417.5 185.5)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="42.029297">execute</tspan></text><text transform="translate(340.5 159)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="63.375">{Instruction}</tspan></text><text transform="translate(195.631 272.98)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49804688" y="11" textLength="8.0039062">S</tspan></text><text transform="translate(204.712 277.938)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="0" y="9" textLength="1.9995117">l</tspan></text></g></g></svg>
diff --git a/doc/graphics/choicegen-example.svg b/doc/graphics/choicegen-example.svg
deleted file mode 100644 (file)
index 675ec8d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="36 72 663 436" width="663pt" height="436pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2006-05-03 17:51:17 +0000</dc:date></metadata><defs><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 0 M 0 -3 L 8 0 L 0 3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker_2" viewBox="-9 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M -8 0 L 0 0 M 0 3 L -8 0 L 0 -3" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="12" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Courier" font-size="12" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Lucida Grande" font-size="14" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><line x1="401.4" y1="354" x2="449.6" y2="354" marker-end="url(#StickArrow_Marker)" marker-start="url(#StickArrow_Marker_2)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="425.5" y1="331" x2="425.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="440.5" y1="338" x2="440.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="410.5" y1="338" x2="410.5" y2="364" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(412 316)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38085938" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.5" y="12" textLength="9.919922"> ±</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="17.419922" y="12" textLength="12.199219"> Δ</tspan></text><circle cx="425.5" cy="354" r="3.0000048" fill="white"/><circle cx="425.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="440.5" cy="354" r="3.0000048" fill="white"/><circle cx="440.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="410.5" cy="354" r="3.0000048" fill="white"/><circle cx="410.5" cy="354" r="3.0000048" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.5215 365.55046)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="21.603516">.. </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="295.24805">double v = Verify.getDouble(&quot;velocity&quot;); </tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="14.402344">..</tspan></text><text transform="translate(220.01942 434.54995)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="230.4375">velocity.class = DoubleThreshold</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="25" textLength="187.23047">velocity.threshold = 13250</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="144.02344">velocity.delta = 500</tspan></text><text transform="translate(132.175 372.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".020996094" y="13" textLength="93.95801">application code</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.13501" y="29" textLength="65.72998">(test driver)</tspan></text><text transform="translate(50 436)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="32.280518" y="13" textLength="27.459961">confi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="59.74048" y="13" textLength="50.59082">guration </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".49780273" y="29" textLength="123.55713">(e.g. mode property fi</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="124.05493" y="29" textLength="14.447266">le)</tspan></text><path d="M 474.5 396 C 475.1666 401.49945 481.8328 409.25033 476.5 412.5 C 471.1672 415.74967 475.91332 414.91673 442.5 415.5 C 409.08668 416.08327 308.41342 414.83345 276 416 C 243.58658 417.16655 250.58307 418.91703 248 422.5 C 246.49657 424.5854 249.56637 427.63104 253.21663 430.79843" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(476.5 345.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".32714844" y="12" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="29.799805" y="12" textLength="7.330078">T</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="36.473633" y="12" textLength="3.9960938">-</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="40.469727" y="12" textLength="68.203125">Δ, T, T+ Δ }</tspan></text><text transform="translate(77.73514 82.637407)" fill="blue"><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="11" textLength="136.822266">Verify.getBoolean()</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="39" textLength="129.62109">Verify.getInt(0,4)</tspan><tspan font-family="Courier" font-size="12" font-weight="500" fill="blue" x="0" y="67" textLength="180.0293">Verify.getDouble(1.0,1.5)</tspan></text><text transform="translate(267.733 84)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="82.376953">C = { true, false</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="82.376953" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(267.233 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="12" textLength="89.72461">C = { 0, 1, 2, 3, 4</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="89.72461" y="12" textLength="7.6992188"> }</tspan></text><text transform="translate(373.733 83.6349)" fill="black"><tspan font-family="Lucida Grande" font-size="14" font-weight="500" x="0" y="14" textLength="10.698242">✓</tspan></text><text transform="translate(374.733 108.635)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="0" y="14" textLength="8.551758">?</tspan></text><text transform="translate(404.733 111)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="279.48633">potentially large sets with lots of uninteresting values</tspan></text><text transform="translate(374.733 135.635)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="0" y="14" textLength="17.103516">??</tspan></text><text transform="translate(404.733 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="22.68164">no fi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="22.68164" y="11" textLength="166.08398">nite value set without heuristics</tspan></text><text transform="translate(267.233 138)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="13" textLength="29.683594">C = { </tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="29.683594" y="13" textLength="9.267578">∞</tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="38.951172" y="13" textLength="7.6992188"> }</tspan></text><text transform="translate(200.175 327.129)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".0021972656" y="13" textLength="173.99561">e.g. &quot;DoubleThresholdChoice&quot;</tspan></text><path d="M 327 180.284 L 327 211.409 L 320 211.409 L 334 221.784 L 348 211.409 L 341 211.409 L 341 180.284 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202 247.12)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="63.86914" y="14" textLength="125.26172">Choice Generators</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="122.41211" y="31" textLength="8.1757812">+</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x=".09326172" y="48" textLength="35.765625">Confi</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="35.858887" y="48" textLength="217.04785">gurable Heuristic Choice Models</tspan></text><text transform="translate(411 238)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="169.42383">JPF internal object to store and </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="144.08203">enumerate a set of choices</tspan></text><text transform="translate(468 283)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="25.347656" y="11" textLength="96.720703">gurable classes to</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="182.09766">create ChoiceGenerator instances</tspan></text><rect x="107" y="225.12" width="140" height="43" fill="white"/><rect x="107" y="225.12" width="140" height="43" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 225.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="98.033203">hasMoreChoices()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="25" textLength="53.361328">advance()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="40" textLength="90.035156">getNextChoice() </tspan><tspan font-family="Lucida Grande" font-size="12" font-weight="500" x="90.035156" y="40" textLength="12">→</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="102.035156" y="40" textLength="9.3339844"> x</tspan></text><rect x="107" y="211.12" width="140" height="14" fill="white"/><rect x="107" y="211.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 211.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="0" y="11" textLength="73.382812">choiceSet: {x}</tspan></text><rect x="107" y="197.12" width="140" height="14" fill="white"/><rect x="107" y="197.12" width="140" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(112 197.12)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="12.9833984" y="11" textLength="104.033203">xChoiceGenerator</tspan></text></g></g></svg>
diff --git a/doc/graphics/genpeer.svg b/doc/graphics/genpeer.svg
deleted file mode 100644 (file)
index 6887428..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="65 35 468 408" width="39pc" height="34pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-04 01:29:55 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Monaco" font-size="12" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><g><xl:use xl:href="#id1_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id6_Graphic" filter="url(#Shadow)"/></g><g id="id1_Graphic"><path d="M 266.75 164 L 266.75 231.5 L 262 231.5 L 271.5 254 L 281 231.5 L 276.25 231.5 L 276.25 164 Z" fill="white"/><path d="M 266.75 164 L 266.75 231.5 L 262 231.5 L 271.5 254 L 281 231.5 L 276.25 231.5 L 276.25 164 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id6_Graphic"><ellipse cx="271.5" cy="202.5" rx="46.500074" ry="19.500031" fill="white"/><ellipse cx="271.5" cy="202.5" rx="46.500074" ry="19.500031" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(239.3 194)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="4.1829102" y="14" textLength="56.03418">GenPeer</tspan></text></g><text transform="translate(133 44.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="100.816406">package x.y.z;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="108.01758">class MyClass {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="273.64453">  native String foo (int i, String s);</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="7.201172">}</tspan></text><text transform="translate(79 257.125)" fill="black"><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="12" textLength="180.0293">class JPF_x_y_z_MyClass {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="28" textLength="36.00586">  ...</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="44" textLength="43.20703">  @MJI</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="60" textLength="108.01758">  public static</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="76" textLength="439.27148">      int foo__ILjava_lang_String__2 (MJIEnv env, int objRef,</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="92" textLength="403.26562">                                      int i, int sRef) {</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="108" textLength="187.23047">    int ref = MJIEnv.NULL;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" fill="gray" x="0" y="124" textLength="180.0293">    // &lt;2do&gt; fill in body</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="140" textLength="108.01758">    return ref;</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="156" textLength="21.603516">  }</tspan><tspan font-family="Monaco" font-size="12" font-weight="500" x="0" y="172" textLength="7.201172">}</tspan></text><text transform="translate(93.5 147.125)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x=".21777344" y="11" textLength="48.955078">&quot;java gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="48.288086" y="11" textLength="115.39453">.nasa.jpf.GenPeer x.y</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="162.79785" y="11" textLength="213.98438">.z.MyClass &gt; JPF_x_y_z_MyClass.java&quot;</tspan></text></g></g></svg>
diff --git a/doc/graphics/interleavings.svg b/doc/graphics/interleavings.svg
deleted file mode 100644 (file)
index 4dfa19e..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="7 283 477 166" width="477pt" height="166pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 20:18:08 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Hoefler Text" font-size="14" panose-1="2 3 6 2 5 5 6 2 2 3" units-per-em="1000" underline-position="0" underline-thickness="67.471858" slope="0" x-height="425" cap-height="689.5" ascent="720.99304" descent="-279.00696" font-weight="500"><font-face-src><font-face-name name="HoeflerText-Regular"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="8" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="116" y="335.875" width="9" height="17" fill="#ceccff"/><rect x="116" y="335.875" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="116" y="355.875" width="9" height="21.5" fill="#ceccff"/><rect x="116" y="355.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="116" y="388.375" width="9" height="33" fill="#ceccff"/><rect x="116" y="388.375" width="9" height="33" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="335.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="335.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="360.375" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="360.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="148.5" y="393.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="148.5" y="393.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="336.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="184" y="336.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="365.875" width="9" height="14" fill="#d6ffc8"/><rect x="184" y="365.875" width="9" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="184" y="394.375" width="9" height="21.5" fill="#d6ffc8"/><rect x="184" y="394.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(183.5 376)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(148 376.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(115.5 372.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(101 337)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">1</tspan></text><text transform="translate(100.5 361)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">2</tspan></text><text transform="translate(115.5 309.5)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(119.5 318)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(148.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(152.5 318.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">2</tspan></text><text transform="translate(183.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".33105469" y="14" textLength="9.3378906">P</tspan></text><text transform="translate(187.5 318.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".75024414" y="9" textLength="6.4995117">N</tspan></text><text transform="translate(101.5 394.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(106.5 400.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(135.5 397.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(140.5 403.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">2</tspan></text><rect x="254" y="355.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="254" y="355.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="254" y="380.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="254" y="380.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(253.5 402)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(21.5 367.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="14.499" y="13" textLength="10.276">A</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="24.075" y="13" textLength="5.166">t</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="29.031" y="13" textLength="29.47">omic</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".121" y="30" textLength="6.188">I</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="5.735" y="30" textLength="23.394">nstr</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="29.479" y="30" textLength="43.4">uctions</tspan></text><text transform="translate(128 292.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".175" y="13" textLength="48.65">Threads</tspan></text><rect x="254.5" y="416.375" width="9" height="21.5" fill="#d6ffc8"/><rect x="254.5" y="416.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(240 339.5)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">1</tspan></text><text transform="translate(239.5 359)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".9411621" y="10" textLength="6.1176758">2</tspan></text><text transform="translate(257 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".05517578" y="14" textLength="3.8896484">I</tspan></text><text transform="translate(260 317.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="1.49731445" y="9" textLength="5.005371">1</tspan></text><text transform="translate(230.5 418.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".38574219" y="11" textLength="15.228516">∑n</tspan></text><text transform="translate(244.5 426.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x="3.0002441" y="9" textLength="1.9995117">i</tspan></text><text transform="translate(296.5 309.875)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x=".05517578" y="14" textLength="3.8896484">I</tspan></text><text transform="translate(299.5 317.5)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".25146484" y="9" textLength="7.4970703">M</tspan></text><text transform="translate(276.5 310.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(166.5 310.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(170.5 397.375)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x=".4411621" y="10" textLength="6.1176758">n</tspan></text><text transform="translate(175.5 403.375)" fill="black"><tspan font-family="Helvetica" font-size="9" font-weight="500" x=".75024414" y="9" textLength="6.4995117">N</tspan></text><rect x="297.5" y="336.375" width="9" height="26.5" fill="#d6ffc8"/><rect x="297.5" y="336.375" width="9" height="26.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="297.5" y="365.375" width="9" height="17" fill="#ceccff"/><rect x="297.5" y="365.375" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="254" y="335.875" width="9" height="17" fill="#ceccff"/><rect x="254" y="335.875" width="9" height="17" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="297.5" y="384.875" width="9" height="21.5" fill="#ffd1d7"/><rect x="297.5" y="384.875" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(297 402)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><rect x="298" y="416.375" width="9" height="21.5" fill="#ffd1d7"/><rect x="298" y="416.375" width="9" height="21.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(276.5 364.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(166.5 355.5)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".49902344" y="11" textLength="10.001953">...</tspan></text><text transform="translate(239.5 292.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x=".224" y="13" textLength="6.188">I</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="5.838" y="13" textLength="12.838">nt</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="18.466" y="13" textLength="28.182">erlea</tspan><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="46.858" y="13" textLength="29.918">vings</tspan></text><path d="M 210.5 369.125 L 224 369.125 L 224 366.375 L 228.5 371.875 L 224 377.375 L 224 374.625 L 210.5 374.625 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(394 355.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="0" y="13" textLength="46.102">(∑    n )!</tspan></text><text transform="translate(397 382.375)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="0" y="13" textLength="44.674">∏   (n !)</tspan></text><text transform="translate(408 351.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="1.1113281" y="8" textLength="5.7773438">N</tspan></text><text transform="translate(406 365.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.0507812" y="8" textLength="10.8984375">i=1</tspan></text><text transform="translate(426 365.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.1113281" y="8" textLength="1.7773438">i</tspan></text><text transform="translate(408 379.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="1.1113281" y="8" textLength="5.7773438">N</tspan></text><text transform="translate(406 392.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.0507812" y="8" textLength="10.8984375">i=1</tspan></text><text transform="translate(428 392.375)" fill="black"><tspan font-family="Helvetica" font-size="8" font-weight="500" x="3.1113281" y="8" textLength="1.7773438">i</tspan></text><line x1="380.5" y1="378.375" x2="457" y2="378.375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(345 368.5)" fill="black"><tspan font-family="Hoefler Text" font-size="14" font-weight="500" x="8.394" y="13" textLength="26.712">M = </tspan></text><rect x="342.5" y="346.375" width="130" height="61.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/doc/graphics/jpf-abstractions.svg b/doc/graphics/jpf-abstractions.svg
deleted file mode 100644 (file)
index b636c6f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="5 32 709 537" width="709pt" height="537pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-26 21:24:31 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="black"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="UMLInheritance_Marker_2" viewBox="-1 -8 14 16" markerWidth="14" markerHeight="16" color="gray"><g><path d="M 12 0 L 0 -7 L 0 7 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Monaco" font-size="10" units-per-em="1000" underline-position="-37.597656" underline-thickness="75.683594" slope="0" x-height="560.54688" cap-height="780.27344" ascent="1e3" descent="-250" font-weight="500"><font-face-src><font-face-name name="Monaco"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="StickArrow_Marker" viewBox="-1 -4 9 8" markerWidth="9" markerHeight="8" color="blue"><g><path d="M 6.3999996 0 L 0 0 M 0 -2.3999999 L 6.3999996 0 L 0 2.3999999" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Ball_Marker" viewBox="-6 -4 7 8" markerWidth="7" markerHeight="8" color="blue"><g><circle cx="-2.3999988" cy="0" r="2.3999977" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="67.3713" y="354" width="232.664" height="103.055" fill="#dee4ff"/><rect x="67.3713" y="354" width="232.664" height="103.055" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="251.917" y="60.5674" width="137.5" height="101.779" fill="#fff9ab"/><rect x="251.917" y="60.5674" width="137.5" height="101.779" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="45" y="191.359" width="261" height="127.641" fill="#aebcff"/><rect x="45" y="191.359" width="261" height="127.641" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="336" y="193" width="367" height="236.266" fill="#a7ffb4"/><rect x="336" y="193" width="367" height="236.266" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="126.92008" y="233.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="233.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 233.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="126.92008" y="219.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="219.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 219.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="37.330078">VM vm</tspan></text></g><g filter="url(#Shadow)"><rect x="126.92008" y="205.5" width="105.75" height="14" fill="white"/><rect x="126.92008" y="205.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(131.92008 205.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="27.862305" y="11" textLength="40.02539">Search</tspan></text></g><line x1="179.49" y1="268.089" x2="179.59506" y2="260.99852" marker-end="url(#UMLInheritance_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="353.25" y="219.5" width="105.75" height="42" fill="white"/><rect x="353.25" y="219.5" width="105.75" height="42" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(358.25 219.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="51.339844">forward ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="25" textLength="62.677734">backtrack ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="39" textLength="76.69336">restoreState ()</tspan></text></g><g filter="url(#Shadow)"><rect x="353.25" y="205.5" width="105.75" height="14" fill="white"/><rect x="353.25" y="205.5" width="105.75" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(358.25 205.5)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="38.875" y="11" textLength="18">VM</tspan></text></g><g filter="url(#Shadow)"><rect x="60.625" y="289" width="105.75" height="14" fill="white"/><rect x="60.625" y="289" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(65.625 289)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="60.625" y="275" width="105.75" height="14" fill="white"/><rect x="60.625" y="275" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(65.625 275)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.864258" y="11" textLength="56.021484">DFSearch</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="105.328" width="114" height="14" fill="white"/><rect x="263.917" y="105.328" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 105.328)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="28.669922">run ()</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="91.3279" width="114" height="14" fill="white"/><rect x="263.917" y="91.3279" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 91.3279)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="0" y="11" textLength="90.697266">search, vm, confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="90.697266" y="11" textLength="6.673828">g</tspan></text></g><g filter="url(#Shadow)"><rect x="263.917" y="77.3279" width="114" height="14" fill="white"/><rect x="263.917" y="77.3279" width="114" height="14" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(268.917 77.3279)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x="40.996094" y="11" textLength="22.007812">JPF</tspan></text></g><path d="M 263.917 113.349 L 31.6528 111.887 L 31 284 L 43.1 284" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 377.917 111.887 L 483.589 111.925 L 483.312 205.5 L 468.9 205.5" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="232.67008" y1="226.5" x2="343.35009" y2="226.04105" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="371.194" y="340.3" width="122" height="28" fill="white"/><rect x="371.194" y="340.3" width="122" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(376.194 340.3)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="49.359375">executeT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="48.919922" y="11" textLength="56.683594">ransition ()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="25" textLength="108.714844">executeInstruction ()</tspan></text></g><g filter="url(#Shadow)"><rect x="371.194" y="326.3" width="122" height="14" fill="white"/><rect x="371.194" y="326.3" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(376.194 326.3)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.000977" y="11" textLength="61.998047">ThreadInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="341.325" y="292.463" width="145" height="28" fill="white"/><rect x="341.325" y="292.463" width="145" height="28" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(346.325 292.463)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="74.689453">initializeNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="74.25" y="11" textLength="53.34961">ransition()</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="25" textLength="74.033203">executeNextT</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="73.59375" y="25" textLength="53.34961">ransition()</tspan></text></g><g filter="url(#Shadow)"><rect x="341.325" y="278.463" width="145" height="14" fill="white"/><rect x="341.325" y="278.463" width="145" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(346.325 278.463)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="31.482422" y="11" textLength="72.035156">SystemState</tspan></text></g><g filter="url(#Shadow)"><rect x="591.25" y="232.411" width="82.375" height="20.589" fill="white"/><rect x="591.25" y="232.411" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(596.25 235.7055)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="9.1816406" y="11" textLength="54.01172">ClassInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="605.438" y="258.411" width="82.375" height="20.589" fill="white"/><rect x="605.438" y="258.411" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(610.438 261.7055)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="3.8642578" y="11" textLength="64.646484">MethodInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="606.25" y="284.411" width="82.375" height="20.589" fill="white"/><rect x="606.25" y="284.411" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(611.25 287.7055)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.191406" y="11" textLength="49.992188">FieldInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="500.625" y="279.161" width="82.375" height="20.589" fill="white"/><rect x="500.625" y="279.161" width="82.375" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(505.625 282.4555)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="1.8515625" y="11" textLength="68.671875">ElementInfo</tspan></text></g><g filter="url(#Shadow)"><rect x="515.594" y="305.161" width="67.0625" height="20.589" fill="white"/><rect x="515.594" y="305.161" width="67.0625" height="20.589" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(520.594 308.4555)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="11.1933594" y="11" textLength="34.675781">Fields</tspan></text></g><g filter="url(#Shadow)"><rect x="515.938" y="330.161" width="67.0625" height="20.589" fill="white"/><rect x="515.938" y="330.161" width="67.0625" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(520.938 333.4555)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="6.538086" y="11" textLength="43.986328">Monitor</tspan></text></g><g filter="url(#Shadow)"><rect x="485.938" y="251.456" width="82.375" height="20.589" fill="white"/><rect x="485.938" y="251.456" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(490.938 254.7505)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="16.511719" y="11" textLength="39.351562">Statics</tspan></text></g><text transform="translate(374.731 408.79)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".12988281" y="11" textLength="106.740234">bytecode  execution</tspan></text><text transform="translate(611.5 312.411)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".31054688" y="11" textLength="62.378906">type + code</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="18.161133" y="25" textLength="26.677734">mgnt</tspan></text><text transform="translate(536.5 357.572)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".4892578" y="11" textLength="32.021484">object</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".158203125" y="25" textLength="32.683594">model</tspan></text><rect x="251.917" y="43.7905" width="78" height="17.1216" fill="#fff9ab"/><rect x="251.917" y="43.7905" width="78" height="17.1216" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.917 45.3513)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.0869141" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.549805" y="11" textLength="45.36328">.nasa.jpf</tspan></text><rect x="45" y="173" width="114" height="18" fill="#aebcff"/><rect x="45" y="173" width="114" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(50 175)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".41113281" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.874023" y="11" textLength="84.714844">.nasa.jpf.search</tspan></text><g filter="url(#Shadow)"><rect x="183.625" y="377.236" width="105.75" height="14" fill="white"/><rect x="183.625" y="377.236" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.625 377.236)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="183.625" y="363.236" width="105.75" height="14" fill="white"/><rect x="183.625" y="363.236" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.625 363.236)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="2.1865234" y="11" textLength="91.376953">HeuristicSearch</tspan></text></g><path d="M 113.5 275 L 113.5 268 L 236.5 268 L 236.5 356.236 L 236.5 363.236" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="336" y="175" width="97.375" height="18" fill="#a7ffb4"/><rect x="336" y="175" width="97.375" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(341 177)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.109375" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.572266" y="11" textLength="64.69336">.nasa.jpf.vm</tspan></text><rect x="67.3713" y="336" width="162" height="18" fill="#dee4ff"/><rect x="67.3713" y="336" width="162" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(72.3713 338)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".40234375" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.865234" y="11" textLength="132.73242">.nasa.jpf.search.heuristic</tspan></text><line x1="236.275" y1="419.43" x2="236.39227" y2="404.73557" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="396" y="467.057" width="166.625" height="90" fill="#deffe8"/><rect x="396" y="467.057" width="166.625" height="90" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="396" y="449.057" width="162" height="18" fill="#deffe8"/><rect x="396" y="449.057" width="162" height="18" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401 451.057)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="8.4033203" y="11" textLength="19.347656">gov</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="26.866211" y="11" textLength="116.73047">.nasa.jpf.vm.bytecode</tspan></text><g filter="url(#Shadow)"><rect x="416.125" y="485.057" width="122" height="14" fill="white"/><rect x="416.125" y="485.057" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(421.125 485.057)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="53.35547">execute ()</tspan></text></g><g filter="url(#Shadow)"><rect x="416.125" y="471.057" width="122" height="14" fill="white"/><rect x="416.125" y="471.057" width="122" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(421.125 471.057)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="25.000977" y="11" textLength="61.998047">Instruction</tspan></text></g><line x1="476.365" y1="520.646" x2="476.3219" y2="512.5568" marker-end="url(#UMLInheritance_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="459.25" y="525.351" width="43" height="18" fill="white"/><rect x="459.25" y="525.351" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(464.25 527.351)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><rect x="455.25" y="521.351" width="43" height="18" fill="white"/><rect x="455.25" y="521.351" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(460.25 523.351)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text><path d="M 371.194 347.3 L 353.25 347.55 L 353.25 485.057 L 406.225 485.057" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="251.917" y="274.824" width="43" height="18" fill="white"/><rect x="251.917" y="274.824" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(256.917 276.824)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><path d="M 235.68224 268 L 272.978 268 L 273.417 274.824" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow)"><rect x="183.4" y="433.43" width="105.75" height="14" fill="white"/><rect x="183.4" y="433.43" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.4 433.43)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="47.34375">search ()</tspan></text></g><g filter="url(#Shadow)"><rect x="183.4" y="419.43" width="105.75" height="14" fill="white"/><rect x="183.4" y="419.43" width="105.75" height="14" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(188.4 419.43)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="10.199219" y="11" textLength="75.351562">BFSHeuristic</tspan></text></g><g filter="url(#Shadow)"><rect x="108" y="419.253" width="43" height="18" fill="white"/><rect x="108" y="419.253" width="43" height="18" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(113 421.253)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="11.4990234" y="11" textLength="10.001953">...</tspan></text></g><path d="M 235.682 410.984 L 129.425 410.984 L 129.5 419.253" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(31 471.057)" fill="blue"><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="10" textLength="102.0166">while (notDone) {</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="24" textLength="96.015625"> ..vm.forward();</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="38" textLength="108.01758"> ..vm.backtrack();</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="52" textLength="156.02539"> if (!properties.check()){</tspan><tspan font-family="Monaco" font-size="10" font-weight="500" fill="blue" x="0" y="66" textLength="168.02734">   reportError(); break; ...</tspan></text><path d="M 48.938554 304.05756 C 43.085163 312.15881 30.529805 331.16365 22.8773 354.647 C 12.6393 386.0645 17.02699 410.2525 22.8773 427.469 C 26.786267 438.97245 34.286499 452.55632 39.54308 460.30485" marker-end="url(#StickArrow_Marker)" marker-start="url(#Ball_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(142.526 127.115)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="0" y="13" textLength="90.67627">search.class=...</tspan></text><text transform="translate(405.865 127)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="0" y="13" textLength="68.98633">vm.class=...</tspan></text><g filter="url(#Shadow)"><rect x="396.381" y="390.67" width="105.75" height="14" fill="white"/><rect x="396.381" y="390.67" width="105.75" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401.381 390.67)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="gray" x="0" y="11" textLength="85.365234">push (), pop() ...</tspan></text></g><g filter="url(#Shadow)"><rect x="396.381" y="376.67" width="105.75" height="14" fill="white"/><rect x="396.381" y="376.67" width="105.75" height="14" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(401.381 377.67)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="13.855469" y="11" textLength="68.039062">StackFrame</tspan></text></g><g filter="url(#Shadow)"><rect x="292.164" y="131.276" width="82.375" height="20.589" fill="white"/><rect x="292.164" y="131.276" width="82.375" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(297.164 134.5705)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="17.194336" y="11" textLength="30.65625">Confi</tspan><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="47.850586" y="11" textLength="7.330078">g</tspan></text></g><g filter="url(#Shadow)"><rect x="488.713" y="222.411" width="67.0625" height="20.589" fill="white"/><rect x="488.713" y="222.411" width="67.0625" height="20.589" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(493.713 225.7055)" fill="gray"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="gray" x="13.859375" y="11" textLength="29.34375">Heap</tspan></text></g></g></g></svg>
diff --git a/doc/graphics/jpf-basic.svg b/doc/graphics/jpf-basic.svg
deleted file mode 100644 (file)
index fdfae11..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="162 106 384 214" width="32pc" height="214pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-11-19 18:37:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="18" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><rect x="299.965" y="117" width="99.4872" height="56.0076" fill="#fffab4"/><rect x="299.965" y="117" width="99.4872" height="56.0076" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(304.965 134.0038)" fill="black"><tspan font-family="Helvetica" font-size="18" font-weight="bold" x="28.23774" y="18" textLength="33.011719">JPF</tspan></text><path d="M 206.06 166.232 L 206.06 123.032 C 206.06 120.0512 218.156 117.632 233.06 117.632 C 247.964 117.632 260.06 120.0512 260.06 123.032 L 260.06 166.232 C 260.06 169.2128 247.964 171.632 233.06 171.632 C 218.156 171.632 206.06 169.2128 206.06 166.232" fill="#dfdbff"/><path d="M 206.06 166.232 L 206.06 123.032 C 206.06 120.0512 218.156 117.632 233.06 117.632 C 247.964 117.632 260.06 120.0512 260.06 123.032 L 260.06 166.232 C 260.06 169.2128 247.964 171.632 233.06 171.632 C 218.156 171.632 206.06 169.2128 206.06 166.232 M 206.06 123.032 C 206.06 126.0128 218.156 128.432 233.06 128.432 C 247.964 128.432 260.06 126.0128 260.06 123.032" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(211.06 139.332)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="2.8554688" y="13" textLength="38.289062">*.class</tspan></text><path d="M 438.51 119.263 L 510.51 119.263 L 510.51 162.463 C 488.91 157.063 460.11 178.663 438.51 167.863 Z" fill="#ffcac7"/><path d="M 438.51 119.263 L 510.51 119.263 L 510.51 162.463 C 488.91 157.063 460.11 178.663 438.51 167.863 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(443.51 135.563)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="14.0200195" y="13" textLength="33.95996">report</tspan></text><path d="M 322.497 264.402 L 322.497 221.202 C 322.497 218.2212 334.593 215.802 349.497 215.802 C 364.401 215.802 376.497 218.2212 376.497 221.202 L 376.497 264.402 C 376.497 267.3828 364.401 269.802 349.497 269.802 C 334.593 269.802 322.497 267.3828 322.497 264.402" fill="#dfdbff"/><path d="M 322.497 264.402 L 322.497 221.202 C 322.497 218.2212 334.593 215.802 349.497 215.802 C 364.401 215.802 376.497 218.2212 376.497 221.202 L 376.497 264.402 C 376.497 267.3828 364.401 269.802 349.497 269.802 C 334.593 269.802 322.497 267.3828 322.497 264.402 M 322.497 221.202 C 322.497 224.1828 334.593 226.602 349.497 226.602 C 364.401 226.602 376.497 224.1828 376.497 221.202" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(327.497 237.502)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x="10.7995605" y="13" textLength="22.400879">*.jpf</tspan></text><text transform="translate(176 185.642)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".154296875" y="14" textLength="90.26172">System under </tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="90.16992" y="14" textLength="8.551758">T</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="97.16992" y="14" textLength="18.675781">est</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="8.1967773" y="31" textLength="99.606445">(Java bytecode)</tspan></text><text transform="translate(418.768 185.485)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".46923828" y="14" textLength="9.3378906">V</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="9.041504" y="14" textLength="22.558594">erifi</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="31.600098" y="14" textLength="80.930664">cation Result</tspan></text><text transform="translate(290.911 276.286)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="3.4726562" y="14" textLength="61.461914">JPF Confi</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="64.93457" y="14" textLength="50.592773">guration</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".35888672" y="31" textLength="92.59961">Properties to V</tspan><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x="92.19287" y="31" textLength="26.448242">erify</tspan></text><path d="M 266.46 140.155075 L 288.70305 140.155075 L 288.70305 134.628 L 296.1174 145.68215 L 288.70305 156.7363 L 288.70305 151.209225 L 266.46 151.209225 Z" fill="white"/><path d="M 266.46 140.155075 L 288.70305 140.155075 L 288.70305 134.628 L 296.1174 145.68215 L 288.70305 156.7363 L 288.70305 151.209225 L 266.46 151.209225 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 404.611 140.078075 L 426.85405 140.078075 L 426.85405 134.551 L 434.2684 145.60515 L 426.85405 156.6593 L 426.85405 151.132225 L 404.611 151.132225 Z" fill="white"/><path d="M 404.611 140.078075 L 426.85405 140.078075 L 426.85405 134.551 L 434.2684 145.60515 L 426.85405 156.6593 L 426.85405 151.132225 L 404.611 151.132225 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 344.23062 209.36985 L 344.23062 187.1268 L 338.70355 187.1268 L 349.7577 179.71245 L 360.81185 187.1268 L 355.28478 187.1268 L 355.28478 209.36985 Z" fill="white"/><path d="M 344.23062 209.36985 L 344.23062 187.1268 L 338.70355 187.1268 L 349.7577 179.71245 L 360.81185 187.1268 L 355.28478 187.1268 L 355.28478 209.36985 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
diff --git a/doc/graphics/jpf-intro-new.svg b/doc/graphics/jpf-intro-new.svg
deleted file mode 100644 (file)
index 56fc211..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="3 18 771 561" width="771pt" height="561pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-04-10 01:07:23 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><path d="M 5.6000004 0 L 0 -2.1000001 L 0 2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-7 -4 8 8" markerWidth="8" markerHeight="8" color="blue"><g><path d="M -5.6000004 0 L 0 2.1000001 L 0 -2.1000001 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="9" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-8 -4 9 8" markerWidth="9" markerHeight="8" color="black"><g><path d="M -6.3999996 0 L 0 2.3999999 L 0 -2.3999999 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-923.0769" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="15" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="blue"><g><path d="M 4 0 L 0 -1.5 L 0 1.5 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_5" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="#ff8987"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_6" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id267_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id10_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id312_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id320_Graphic" filter="url(#Shadow)"/></g><line x1="437.4379" y1="41.027123" x2="519.2401" y2="40.616177" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="145.336" y1="40.4099" x2="424.873" y2="40.4099" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 135.678 89.1207 L 493.624 89.1207 C 500.25142 89.1207 505.624 94.493283 505.624 101.1207 L 505.624 477.0257 C 505.624 483.65312 500.25142 489.0257 493.624 489.0257 L 135.678 489.0257 C 129.05058 489.0257 123.678 483.65312 123.678 477.0257 L 123.678 101.1207 C 123.678 94.493283 129.05058 89.1207 135.678 89.1207 Z" fill="white"/><path d="M 135.678 89.1207 L 493.624 89.1207 C 500.25142 89.1207 505.624 94.493283 505.624 101.1207 L 505.624 477.0257 C 505.624 483.65312 500.25142 489.0257 493.624 489.0257 L 135.678 489.0257 C 129.05058 489.0257 123.678 483.65312 123.678 477.0257 L 123.678 101.1207 C 123.678 94.493283 129.05058 89.1207 135.678 89.1207 Z" stroke="#999" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 530.289 141.229 L 734.049 141.229 L 734.049 281.1298 C 672.921 263.6422 591.417 333.5926 530.289 298.6174 Z" fill="white"/><path d="M 530.289 141.229 L 734.049 141.229 L 734.049 281.1298 C 672.921 263.6422 591.417 333.5926 530.289 298.6174 Z" stroke="silver" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(538.789 143.229)" fill="#7e7e7e"><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="9" textLength="149.41406">------------------------------------ error path</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="20" textLength="5.0009766">..</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="31" textLength="38.53125">Step #14 </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="38.373047" y="31" textLength="41.027344">Thread #1</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="42" textLength="193.5791">  oldclassic.java:95           event2.waitForEvent();</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="53" textLength="122.541504">  oldclassic.java:37         wait();</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="75" textLength="163.92041">------------------------------------ thread stacks</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="86" textLength="33.51709">Thread: </tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="33.358887" y="86" textLength="36.518555">Thread-0</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="97" textLength="181.58643">        at java.lang.Object.wait(Object.java:429)</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="108" textLength="184.57471">        at Event.waitForEvent(oldclassic.java:37)</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="119" textLength="27.505371">         ..</tspan><tspan font-family="Helvetica" font-size="9" font-weight="500" fill="#7e7e7e" x="0" y="130" textLength="126.140625">========================</tspan><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="#7e7e7e" x="0" y="142" textLength="114.49707">  1 Error Found: Deadlock</tspan></text><g filter="url(#Shadow_2)"><path d="M 30.1245 156.971 L 226.4705 156.971 C 233.09792 156.971 238.4705 162.34358 238.4705 168.971 L 238.4705 349.105 C 238.4705 355.73242 233.09792 361.105 226.4705 361.105 L 30.1245 361.105 C 23.497083 361.105 18.1245 355.73242 18.1245 349.105 L 18.1245 168.971 C 18.1245 162.34358 23.497083 156.971 30.1245 156.971 Z" fill="#ffd3db"/><path d="M 30.1245 156.971 L 226.4705 156.971 C 233.09792 156.971 238.4705 162.34358 238.4705 168.971 L 238.4705 349.105 C 238.4705 355.73242 233.09792 361.105 226.4705 361.105 L 30.1245 361.105 C 23.497083 361.105 18.1245 355.73242 18.1245 349.105 L 18.1245 168.971 C 18.1245 162.34358 23.497083 156.971 30.1245 156.971 Z" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 146.022 97.9336 L 482.417 97.9336 C 489.04442 97.9336 494.417 103.30618 494.417 109.9336 L 494.417 422.0106 C 494.417 428.63802 489.04442 434.0106 482.417 434.0106 L 146.022 434.0106 C 139.39458 434.0106 134.022 428.63802 134.022 422.0106 L 134.022 109.9336 C 134.022 103.30618 139.39458 97.9336 146.022 97.9336 Z" fill="#fffbbf" fill-opacity=".57"/><path d="M 146.022 97.9336 L 482.417 97.9336 C 489.04442 97.9336 494.417 103.30618 494.417 109.9336 L 494.417 422.0106 C 494.417 428.63802 489.04442 434.0106 482.417 434.0106 L 146.022 434.0106 C 139.39458 434.0106 134.022 428.63802 134.022 422.0106 L 134.022 109.9336 C 134.022 103.30618 139.39458 97.9336 146.022 97.9336 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g filter="url(#Shadow_2)"><path d="M 271.936 111.498 L 305.1668 111.498 C 311.79422 111.498 317.1668 116.87058 317.1668 123.498 L 317.1668 396.268 C 317.1668 402.89542 311.79422 408.268 305.1668 408.268 L 271.936 408.268 C 265.30858 408.268 259.936 402.89542 259.936 396.268 L 259.936 123.498 C 259.936 116.87058 265.30858 111.498 271.936 111.498 Z" fill="white"/><path d="M 271.936 111.498 L 305.1668 111.498 C 311.79422 111.498 317.1668 116.87058 317.1668 123.498 L 317.1668 396.268 C 317.1668 402.89542 311.79422 408.268 305.1668 408.268 L 271.936 408.268 C 265.30858 408.268 259.936 402.89542 259.936 396.268 L 259.936 123.498 C 259.936 116.87058 265.30858 111.498 271.936 111.498 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(264.936 242.883)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="10.7775094" y="14" textLength="25.675781">JPF</tspan><tspan font-family="Helvetica" font-size="14" font-weight="bold" x="7.667158" y="31" textLength="31.896484">Core</tspan></text></g><path d="M 346.726 196.737 L 410.101 196.737 C 414.976 196.737 414.976 196.737 414.976 198.91808 L 414.976 197.82754 C 417.4135 197.82754 417.4135 197.82754 417.4135 200.00862 L 417.4135 198.91808 C 419.851 198.91808 419.851 198.91808 419.851 201.09916 L 419.851 229.45322 C 419.851 231.6343 419.851 231.6343 414.976 231.6343 L 351.601 231.6343 C 346.726 231.6343 346.726 231.6343 346.726 230.54376 C 344.2885 230.54376 344.2885 230.54376 344.2885 229.45322 C 341.851 229.45322 341.851 229.45322 341.851 227.27214 L 341.851 198.91808 C 341.851 196.737 341.851 196.737 346.726 196.737 Z" fill="#fefff6"/><path d="M 346.726 196.737 L 410.101 196.737 C 414.976 196.737 414.976 196.737 414.976 198.91808 L 414.976 227.27214 C 414.976 229.45322 414.976 229.45322 410.101 229.45322 L 346.726 229.45322 C 341.851 229.45322 341.851 229.45322 341.851 227.27214 L 341.851 198.91808 C 341.851 196.737 341.851 196.737 346.726 196.737 M 414.976 197.82754 C 417.4135 197.82754 417.4135 197.82754 417.4135 200.00862 L 417.4135 229.45322 C 417.4135 230.54376 417.4135 230.54376 412.5385 230.54376 L 349.1635 230.54376 C 344.2885 230.54376 344.2885 230.54376 344.2885 229.45322 M 417.4135 198.91808 C 419.851 198.91808 419.851 198.91808 419.851 201.09916 L 419.851 229.45322 C 419.851 231.6343 419.851 231.6343 414.976 231.6343 L 351.601 231.6343 C 346.726 231.6343 346.726 231.6343 346.726 230.54376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 198.35354)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="3.9934375" y="11" textLength="48.703125">bytecode</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.341094" y="25" textLength="16.0078125">set</tspan></text><path d="M 346.726 284.892 L 410.101 284.892 C 414.976 284.892 414.976 284.892 414.976 287.07308 L 414.976 285.98254 C 417.4135 285.98254 417.4135 285.98254 417.4135 288.16362 L 417.4135 287.07308 C 419.851 287.07308 419.851 287.07308 419.851 289.25416 L 419.851 317.60822 C 419.851 319.7893 419.851 319.7893 414.976 319.7893 L 351.601 319.7893 C 346.726 319.7893 346.726 319.7893 346.726 318.69876 C 344.2885 318.69876 344.2885 318.69876 344.2885 317.60822 C 341.851 317.60822 341.851 317.60822 341.851 315.42714 L 341.851 287.07308 C 341.851 284.892 341.851 284.892 346.726 284.892 Z" fill="#fefff6"/><path d="M 346.726 284.892 L 410.101 284.892 C 414.976 284.892 414.976 284.892 414.976 287.07308 L 414.976 315.42714 C 414.976 317.60822 414.976 317.60822 410.101 317.60822 L 346.726 317.60822 C 341.851 317.60822 341.851 317.60822 341.851 315.42714 L 341.851 287.07308 C 341.851 284.892 341.851 284.892 346.726 284.892 M 414.976 285.98254 C 417.4135 285.98254 417.4135 285.98254 417.4135 288.16362 L 417.4135 317.60822 C 417.4135 318.69876 417.4135 318.69876 412.5385 318.69876 L 349.1635 318.69876 C 344.2885 318.69876 344.2885 318.69876 344.2885 317.60822 M 417.4135 287.07308 C 419.851 287.07308 419.851 287.07308 419.851 289.25416 L 419.851 317.60822 C 419.851 319.7893 419.851 319.7893 414.976 319.7893 L 351.601 319.7893 C 346.726 319.7893 346.726 319.7893 346.726 318.69876" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 286.50854)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.336211" y="11" textLength="42.017578">listener/</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.334258" y="25" textLength="44.021484">property</tspan></text><path d="M 346.726 240.755 L 410.101 240.755 C 414.976 240.755 414.976 240.755 414.976 242.93608 L 414.976 241.84554 C 417.4135 241.84554 417.4135 241.84554 417.4135 244.02662 L 417.4135 242.93608 C 419.851 242.93608 419.851 242.93608 419.851 245.11716 L 419.851 273.47122 C 419.851 275.6523 419.851 275.6523 414.976 275.6523 L 351.601 275.6523 C 346.726 275.6523 346.726 275.6523 346.726 274.56176 C 344.2885 274.56176 344.2885 274.56176 344.2885 273.47122 C 341.851 273.47122 341.851 273.47122 341.851 271.29014 L 341.851 242.93608 C 341.851 240.755 341.851 240.755 346.726 240.755 Z" fill="#fefff6"/><path d="M 346.726 240.755 L 410.101 240.755 C 414.976 240.755 414.976 240.755 414.976 242.93608 L 414.976 271.29014 C 414.976 273.47122 414.976 273.47122 410.101 273.47122 L 346.726 273.47122 C 341.851 273.47122 341.851 273.47122 341.851 271.29014 L 341.851 242.93608 C 341.851 240.755 341.851 240.755 346.726 240.755 M 414.976 241.84554 C 417.4135 241.84554 417.4135 241.84554 417.4135 244.02662 L 417.4135 273.47122 C 417.4135 274.56176 417.4135 274.56176 412.5385 274.56176 L 349.1635 274.56176 C 344.2885 274.56176 344.2885 274.56176 344.2885 273.47122 M 417.4135 242.93608 C 419.851 242.93608 419.851 242.93608 419.851 245.11716 L 419.851 273.47122 C 419.851 275.6523 419.851 275.6523 414.976 275.6523 L 351.601 275.6523 C 346.726 275.6523 346.726 275.6523 346.726 274.56176" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 242.37154)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.329375" y="11" textLength="55.365234">publisher/ </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="18.343047" y="25" textLength="20.003906">-ext</tspan></text><path d="M 346.726 110.242 L 410.101 110.242 C 414.976 110.242 414.976 110.242 414.976 112.42308 L 414.976 111.33254 C 417.4135 111.33254 417.4135 111.33254 417.4135 113.51362 L 417.4135 112.42308 C 419.851 112.42308 419.851 112.42308 419.851 114.60416 L 419.851 142.95822 C 419.851 145.1393 419.851 145.1393 414.976 145.1393 L 351.601 145.1393 C 346.726 145.1393 346.726 145.1393 346.726 144.04876 C 344.2885 144.04876 344.2885 144.04876 344.2885 142.95822 C 341.851 142.95822 341.851 142.95822 341.851 140.77714 L 341.851 112.42308 C 341.851 110.242 341.851 110.242 346.726 110.242 Z" fill="#fefff6"/><path d="M 346.726 110.242 L 410.101 110.242 C 414.976 110.242 414.976 110.242 414.976 112.42308 L 414.976 140.77714 C 414.976 142.95822 414.976 142.95822 410.101 142.95822 L 346.726 142.95822 C 341.851 142.95822 341.851 142.95822 341.851 140.77714 L 341.851 112.42308 C 341.851 110.242 341.851 110.242 346.726 110.242 M 414.976 111.33254 C 417.4135 111.33254 417.4135 111.33254 417.4135 113.51362 L 417.4135 142.95822 C 417.4135 144.04876 417.4135 144.04876 412.5385 144.04876 L 349.1635 144.04876 C 344.2885 144.04876 344.2885 144.04876 344.2885 142.95822 M 417.4135 112.42308 C 419.851 112.42308 419.851 112.42308 419.851 114.60416 L 419.851 142.95822 C 419.851 145.1393 419.851 145.1393 414.976 145.1393 L 351.601 145.1393 C 346.726 145.1393 346.726 145.1393 346.726 144.04876" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 111.85854)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="11.00125" y="11" textLength="34.6875">choice</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.6604297" y="25" textLength="51.36914">generator</tspan></text><path d="M 346.726 328.15 L 410.101 328.15 C 414.976 328.15 414.976 328.15 414.976 330.33108 L 414.976 329.24054 C 417.4135 329.24054 417.4135 329.24054 417.4135 331.42162 L 417.4135 330.33108 C 419.851 330.33108 419.851 330.33108 419.851 332.51216 L 419.851 360.86622 C 419.851 363.0473 419.851 363.0473 414.976 363.0473 L 351.601 363.0473 C 346.726 363.0473 346.726 363.0473 346.726 361.95676 C 344.2885 361.95676 344.2885 361.95676 344.2885 360.86622 C 341.851 360.86622 341.851 360.86622 341.851 358.68514 L 341.851 330.33108 C 341.851 328.15 341.851 328.15 346.726 328.15 Z" fill="#fefff6"/><path d="M 346.726 328.15 L 410.101 328.15 C 414.976 328.15 414.976 328.15 414.976 330.33108 L 414.976 358.68514 C 414.976 360.86622 414.976 360.86622 410.101 360.86622 L 346.726 360.86622 C 341.851 360.86622 341.851 360.86622 341.851 358.68514 L 341.851 330.33108 C 341.851 328.15 341.851 328.15 346.726 328.15 M 414.976 329.24054 C 417.4135 329.24054 417.4135 329.24054 417.4135 331.42162 L 417.4135 360.86622 C 417.4135 361.95676 417.4135 361.95676 412.5385 361.95676 L 349.1635 361.95676 C 344.2885 361.95676 344.2885 361.95676 344.2885 360.86622 M 417.4135 330.33108 C 419.851 330.33108 419.851 330.33108 419.851 332.51216 L 419.851 360.86622 C 419.851 363.0473 419.851 363.0473 414.976 363.0473 L 351.601 363.0473 C 346.726 363.0473 346.726 363.0473 346.726 361.95676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 329.76654)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="2.6721484" y="11" textLength="51.345703">serializer/</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.673125" y="25" textLength="41.34375">restorer</tspan></text><path d="M 154.52 285.36 L 217.895 285.36 C 222.77 285.36 222.77 285.36 222.77 287.54108 L 222.77 286.45054 C 225.2075 286.45054 225.2075 286.45054 225.2075 288.63162 L 225.2075 287.54108 C 227.645 287.54108 227.645 287.54108 227.645 289.72216 L 227.645 318.07622 C 227.645 320.2573 227.645 320.2573 222.77 320.2573 L 159.395 320.2573 C 154.52 320.2573 154.52 320.2573 154.52 319.16676 C 152.0825 319.16676 152.0825 319.16676 152.0825 318.07622 C 149.645 318.07622 149.645 318.07622 149.645 315.89514 L 149.645 287.54108 C 149.645 285.36 149.645 285.36 154.52 285.36 Z" fill="#fefff6"/><path d="M 154.52 285.36 L 217.895 285.36 C 222.77 285.36 222.77 285.36 222.77 287.54108 L 222.77 315.89514 C 222.77 318.07622 222.77 318.07622 217.895 318.07622 L 154.52 318.07622 C 149.645 318.07622 149.645 318.07622 149.645 315.89514 L 149.645 287.54108 C 149.645 285.36 149.645 285.36 154.52 285.36 M 222.77 286.45054 C 225.2075 286.45054 225.2075 286.45054 225.2075 288.63162 L 225.2075 318.07622 C 225.2075 319.16676 225.2075 319.16676 220.3325 319.16676 L 156.9575 319.16676 C 152.0825 319.16676 152.0825 319.16676 152.0825 318.07622 M 225.2075 287.54108 C 227.645 287.54108 227.645 287.54108 227.645 289.72216 L 227.645 318.07622 C 227.645 320.2573 227.645 320.2573 222.77 320.2573 L 159.395 320.2573 C 154.52 320.2573 154.52 320.2573 154.52 319.16676" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(156.205 293.97654)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".31960937" y="11" textLength="56.05078">annotation</tspan></text><line x1="249.343" y1="60.98" x2="249.343" y2="410.723" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="10,3,2,3"/><text transform="translate(130.465 327.122)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".47558594" y="11" textLength="106.04883"> (optional) in-source</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="17.148438" y="25" textLength="72.703125">property spec</tspan></text><path d="M 155.56714 196.608 L 221.63501 196.608 C 226.71716 196.608 226.71716 196.608 226.71716 198.78908 L 226.71716 197.69854 C 229.25823 197.69854 229.25823 197.69854 229.25823 199.87962 L 229.25823 198.78908 C 231.7993 198.78908 231.7993 198.78908 231.7993 200.97016 L 231.7993 229.32422 C 231.7993 231.5053 231.7993 231.5053 226.71716 231.5053 L 160.64929 231.5053 C 155.56714 231.5053 155.56714 231.5053 155.56714 230.41476 C 153.02607 230.41476 153.02607 230.41476 153.02607 229.32422 C 150.485 229.32422 150.485 229.32422 150.485 227.14314 L 150.485 198.78908 C 150.485 196.608 150.485 196.608 155.56714 196.608 Z" fill="#fefff6"/><path d="M 155.56714 196.608 L 221.63501 196.608 C 226.71716 196.608 226.71716 196.608 226.71716 198.78908 L 226.71716 227.14314 C 226.71716 229.32422 226.71716 229.32422 221.63501 229.32422 L 155.56714 229.32422 C 150.485 229.32422 150.485 229.32422 150.485 227.14314 L 150.485 198.78908 C 150.485 196.608 150.485 196.608 155.56714 196.608 M 226.71716 197.69854 C 229.25823 197.69854 229.25823 197.69854 229.25823 199.87962 L 229.25823 229.32422 C 229.25823 230.41476 229.25823 230.41476 224.17608 230.41476 L 158.10822 230.41476 C 153.02607 230.41476 153.02607 230.41476 153.02607 229.32422 M 229.25823 198.78908 C 231.7993 198.78908 231.7993 198.78908 231.7993 200.97016 L 231.7993 229.32422 C 231.7993 231.5053 231.7993 231.5053 226.71716 231.5053 L 160.64929 231.5053 C 155.56714 231.5053 155.56714 231.5053 155.56714 230.41476" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(157.11129 198.22454)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="10.0831523" y="11" textLength="39.357422">domain</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="1.7569804" y="25" textLength="56.009766">framework</tspan></text><text transform="translate(172.599 163.656)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".158203125" y="11" textLength="32.683594">model</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".1640625" y="25" textLength="32.671875">library</tspan></text><g id="id267_Graphic"><path d="M 32.187544 235.617 L 102.98351 235.617 C 108.429356 235.617 108.429356 235.617 108.429356 238.3499 L 108.429356 236.98345 C 111.15228 236.98345 111.15228 236.98345 111.15228 239.71634 L 111.15228 238.3499 C 113.8752 238.3499 113.8752 238.3499 113.8752 241.08279 L 113.8752 276.6104 C 113.8752 279.3433 113.8752 279.3433 108.429356 279.3433 L 37.633388 279.3433 C 32.187544 279.3433 32.187544 279.3433 32.187544 277.97685 C 29.464622 277.97685 29.464622 277.97685 29.464622 276.6104 C 26.7417 276.6104 26.7417 276.6104 26.7417 273.87751 L 26.7417 238.3499 C 26.7417 235.617 26.7417 235.617 32.187544 235.617 Z" fill="white"/><path d="M 32.187544 235.617 L 102.98351 235.617 C 108.429356 235.617 108.429356 235.617 108.429356 238.3499 L 108.429356 273.87751 C 108.429356 276.6104 108.429356 276.6104 102.98351 276.6104 L 32.187544 276.6104 C 26.7417 276.6104 26.7417 276.6104 26.7417 273.87751 L 26.7417 238.3499 C 26.7417 235.617 26.7417 235.617 32.187544 235.617 M 108.429356 236.98345 C 111.15228 236.98345 111.15228 236.98345 111.15228 239.71634 L 111.15228 276.6104 C 111.15228 277.97685 111.15228 277.97685 105.706434 277.97685 L 34.910466 277.97685 C 29.464622 277.97685 29.464622 277.97685 29.464622 276.6104 M 111.15228 238.3499 C 113.8752 238.3499 113.8752 238.3499 113.8752 241.08279 L 113.8752 276.6104 C 113.8752 279.3433 113.8752 279.3433 108.429356 279.3433 L 37.633388 279.3433 C 32.187544 279.3433 32.187544 279.3433 32.187544 277.97685" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(33.48437 248.18452)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="bold" fill="red" x=".57964937" y="11" textLength="63.339844">application</tspan></text></g><line x1="122.237904" y1="240.46846" x2="153.34371" y2="230.27844" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="122.17559" y1="275.74486" x2="150.254375" y2="285.63264" marker-start="url(#FilledArrow_Marker_3)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.351" y1="127.69064" x2="316.791" y2="127.69" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.851" y1="170.78465" x2="316.816" y2="170.46" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.851" y1="214.18565" x2="316.816" y2="214.088" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.3511" y1="258.1939" x2="316.816" y2="257.715" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.35102" y1="302.33574" x2="316.816" y2="302.095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="341.35116" y1="345.5861" x2="316.816" y2="344.97" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="23.7492" y1="70.7573" x2="238.504" y2="70.7573" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="132.098" y="60.4708" width="34" height="16" fill="white"/><text transform="translate(137.098 60.4708)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="23.841797">SuT</tspan></text><line x1="260.26599" y1="70.768543" x2="485.89801" y2="70.312557" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="304.843" y="53.864" width="82" height="32" fill="white"/><text transform="translate(309.843 53.864)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="55.649902">execution</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="29" textLength="71.538086">environment</tspan></text><path d="M 346.569 372.698 L 409.944 372.698 C 414.819 372.698 414.819 372.698 414.819 374.87908 L 414.819 373.78854 C 417.2565 373.78854 417.2565 373.78854 417.2565 375.96962 L 417.2565 374.87908 C 419.694 374.87908 419.694 374.87908 419.694 377.06016 L 419.694 405.41422 C 419.694 407.5953 419.694 407.5953 414.819 407.5953 L 351.444 407.5953 C 346.569 407.5953 346.569 407.5953 346.569 406.50476 C 344.1315 406.50476 344.1315 406.50476 344.1315 405.41422 C 341.694 405.41422 341.694 405.41422 341.694 403.23314 L 341.694 374.87908 C 341.694 372.698 341.694 372.698 346.569 372.698 Z" fill="#fefff6"/><path d="M 346.569 372.698 L 409.944 372.698 C 414.819 372.698 414.819 372.698 414.819 374.87908 L 414.819 403.23314 C 414.819 405.41422 414.819 405.41422 409.944 405.41422 L 346.569 405.41422 C 341.694 405.41422 341.694 405.41422 341.694 403.23314 L 341.694 374.87908 C 341.694 372.698 341.694 372.698 346.569 372.698 M 414.819 373.78854 C 417.2565 373.78854 417.2565 373.78854 417.2565 375.96962 L 417.2565 405.41422 C 417.2565 406.50476 417.2565 406.50476 412.3815 406.50476 L 349.0065 406.50476 C 344.1315 406.50476 344.1315 406.50476 344.1315 405.41422 M 417.2565 374.87908 C 419.694 374.87908 419.694 374.87908 419.694 377.06016 L 419.694 405.41422 C 419.694 407.5953 419.694 407.5953 414.819 407.5953 L 351.444 407.5953 C 346.569 407.5953 346.569 407.5953 346.569 406.50476" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.254 374.31454)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="10.336211" y="11" textLength="36.017578">search</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.0022266" y="25" textLength="42.685547">strategy</tspan></text><line x1="341.19404" y1="390.13999" x2="316.659" y2="389.813" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(265.13 289.673)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="10.326172" y="11" textLength="25.347656">Java</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="6.995117" y="25" textLength="32.009766">virtual</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32128906" y="39" textLength="45.357422">machine</tspan></text><path d="M 118.697 248.87425 L 168.44068 248.87425 L 168.44068 239.294 L 185.0219 258.4545 L 168.44068 277.615 L 168.44068 268.03475 L 118.697 268.03475 Z" fill="#ebe8ff"/><path d="M 118.697 248.87425 L 168.44068 248.87425 L 168.44068 239.294 L 185.0219 258.4545 L 168.44068 277.615 L 168.44068 268.03475 L 118.697 268.03475 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(123.348 250.672)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".1484375" y="11" textLength="48.703125">bytecode</tspan></text><text transform="translate(484.521 250.515)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32617188" y="11" textLength="31.347656">report</tspan></text><text transform="translate(141.086 102.486)" fill="red"><tspan font-family="Helvetica" font-size="15" font-weight="500" fill="red" x="0" y="15" textLength="26.66748">JPF</tspan></text><line x1="627.333" y1="314.722" x2="627.333" y2="320.178" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="624.70977" y1="327.42927" x2="618.59018" y2="334.78068" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="613.34386" y1="341.08335" x2="607.2231" y2="348.43661" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="604.6" y1="355.688" x2="604.6" y2="361.143" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 597.527 364.956 C 594.45664 365.32263 591.13855 366.62494 588.315 366.056 C 585.49145 365.48706 582.53897 363.92343 580.584 361.542 C 578.62903 359.16057 576.91747 355.24282 576.584 351.766 C 576.25053 348.28918 577.16148 343.96717 578.583 340.679 C 580.00452 337.39083 582.44243 334.16829 585.114 332.035 C 587.78557 329.90171 591.53098 328.46127 594.614 327.878 C 597.69702 327.29473 600.5994 327.27322 603.614 328.535 C 605.1366 329.1723 606.66708 330.34182 608.19938 331.6403" marker-end="url(#FilledArrow_Marker_4)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="631.00532" y1="326.1034" x2="651.1297" y2="336.10659" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="652.24505" y1="341.1374" x2="635.57295" y2="362.0376" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="634.06917" y1="369.20604" x2="636.22385" y2="377.31395" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 651.872 350.006 C 649.0306 353.83895 644.38623 358.33382 643.347 361.506 C 642.30777 364.67818 643.85634 367.09003 645.636 369.041 C 647.41566 370.99197 651.09246 372.4959 654.026 373.213 C 656.95954 373.9301 660.37495 373.87278 663.239 373.344 C 666.10305 372.81522 669.20403 371.84615 671.212 370.04 C 673.21997 368.23385 675.44765 365.4452 675.288 362.506 C 675.12835 359.5668 672.3428 355.48602 670.254 352.403 C 669.2545 350.92772 668.0666 349.58246 666.82558 348.27392" marker-end="url(#FilledArrow_Marker_4)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="658.56888" y1="339.55327" x2="693.57913" y2="354.62173" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="628.534" y1="402.73847" x2="634.65403" y2="410.0915" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="646.02086" y1="402.73835" x2="639.9001" y2="410.09161" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="697.2711" y1="360.34232" x2="697.0259" y2="373.76468" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><line x1="696.951" y1="381.964" x2="696.951" y2="387.418" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="694.32786" y1="394.66935" x2="688.2071" y2="402.02261" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="682.9609" y1="408.32537" x2="676.84107" y2="415.6776" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="699.57414" y1="394.66935" x2="705.6949" y2="402.02261" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="627.333" cy="310.622" r="3.6000058" fill="yellow"/><circle cx="627.333" cy="310.622" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="627.333" cy="324.278" r="3.6000058" fill="yellow"/><circle cx="627.333" cy="324.278" r="3.6000058" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="615.967" cy="337.932" r="3.6000058" fill="white"/><circle cx="615.967" cy="337.932" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="604.6" cy="351.588" r="3.6000058" fill="white"/><circle cx="604.6" cy="351.588" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="604.6" cy="365.243" r="3.6000058" fill="blue"/><circle cx="604.6" cy="365.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="654.802" cy="337.932" r="3.6000058" fill="yellow"/><circle cx="654.802" cy="337.932" r="3.6000058" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="633.016" cy="365.243" r="3.6000058" fill="blue"/><circle cx="633.016" cy="365.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="697.346" cy="356.243" r="3.6000058" fill="yellow"/><circle cx="697.346" cy="356.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="637.277" cy="381.277" r="3.6000058" fill="white"/><circle cx="637.277" cy="381.277" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="648.644" cy="399.587" r="3.6000058" fill="white"/><circle cx="648.644" cy="399.587" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="625.911" cy="399.587" r="3.6000058" fill="white"/><circle cx="625.911" cy="399.587" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="637.277" cy="413.243" r="3.6000058" fill="white"/><circle cx="637.277" cy="413.243" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="696.951" cy="391.518" r="3.6000058" fill="white"/><circle cx="696.951" cy="391.518" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="708.318" cy="405.174" r="3.6000058" fill="white"/><circle cx="708.318" cy="405.174" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="685.584" cy="405.174" r="3.6000058" fill="white"/><circle cx="685.584" cy="405.174" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="674.218" cy="418.829" r="3.6000058" fill="white"/><circle cx="674.218" cy="418.829" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="696.951" cy="377.864" r="3.6000058" fill="red"/><circle cx="696.951" cy="377.864" r="3.6000058" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(581.584 332.815)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="2.0389578" y="11" textLength="20.021484">end</tspan></text><text transform="translate(645.152 355.212)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="blue" x="1.5648078" y="11" textLength="26.021484">seen</tspan></text><text transform="translate(698.473 307.269)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="1.88925" y="11" textLength="52.6875">error-path</tspan></text><text transform="translate(703.341 369.88)" fill="red"><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="6.2222578" y="11" textLength="47.35547">property </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" fill="red" x="6.219328" y="25" textLength="44.027344">violation</tspan></text><path d="M 680.049 343.105 C 688.4935 338.63578 694.70723 336.80062 705.385 329.696 C 716.06277 322.59138 737.21352 311.11894 744.122 300.473 C 751.03048 289.82706 751.51837 281.20713 746.84 265.814 C 742.84603 252.67272 730.70992 233.928 720.8592 216.75722" marker-end="url(#FilledArrow_Marker_5)" stroke="#ff8987" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="618.13855" y1="341.41063" x2="630.84446" y2="361.76436" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="635.11422" y1="384.7611" x2="628.07376" y2="396.10288" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="639.4399" y1="384.76102" x2="646.4811" y2="396.10298" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 706.065 373.189 C 710.36857 367.52657 717.165 361.63612 718.977 356.2 C 720.789 350.76388 723.2802 345.6655 716.938 340.569 C 710.5958 335.4725 690.9995 330.71432 680.92 325.618 C 670.8405 320.52168 663.47663 316.3302 656.455 309.988 C 651.8553 305.83336 648.22683 300.7056 644.6155 295.56124" marker-end="url(#FilledArrow_Marker_5)" stroke="#ff8987" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(313.697 453.368)" fill="red"><tspan font-family="Helvetica" font-size="15" font-weight="500" fill="red" x="0" y="15" textLength="71.68213">host - JVM</tspan></text><line x1="429.938" y1="29.5677" x2="429.938" y2="410.892" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="10,3,2,3"/><rect x="225.929" y="30.9748" width="100" height="16" fill="white"/><text transform="translate(230.929 30.9748)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="89.59082">JPF distribution</tspan></text><path d="M 437.51213 154.523 L 483.03984 154.523 C 486.54197 154.523 486.54197 154.523 486.54197 156.70408 L 486.54197 155.61354 C 488.29303 155.61354 488.29303 155.61354 488.29303 157.79462 L 488.29303 156.70408 C 490.0441 156.70408 490.0441 156.70408 490.0441 158.88516 L 490.0441 187.23922 C 490.0441 189.4203 490.0441 189.4203 486.54197 189.4203 L 441.01426 189.4203 C 437.51213 189.4203 437.51213 189.4203 437.51213 188.32976 C 435.76107 188.32976 435.76107 188.32976 435.76107 187.23922 C 434.01 187.23922 434.01 187.23922 434.01 185.05814 L 434.01 156.70408 C 434.01 154.523 434.01 154.523 437.51213 154.523 Z" fill="#fefff6"/><path d="M 437.51213 154.523 L 483.03984 154.523 C 486.54197 154.523 486.54197 154.523 486.54197 156.70408 L 486.54197 185.05814 C 486.54197 187.23922 486.54197 187.23922 483.03984 187.23922 L 437.51213 187.23922 C 434.01 187.23922 434.01 187.23922 434.01 185.05814 L 434.01 156.70408 C 434.01 154.523 434.01 154.523 437.51213 154.523 M 486.54197 155.61354 C 488.29303 155.61354 488.29303 155.61354 488.29303 157.79462 L 488.29303 187.23922 C 488.29303 188.32976 488.29303 188.32976 484.7909 188.32976 L 439.2632 188.32976 C 435.76107 188.32976 435.76107 188.32976 435.76107 187.23922 M 488.29303 156.70408 C 490.0441 156.70408 490.0441 156.70408 490.0441 158.88516 L 490.0441 187.23922 C 490.0441 189.4203 490.0441 189.4203 486.54197 189.4203 L 441.01426 189.4203 C 437.51213 189.4203 437.51213 189.4203 437.51213 188.32976" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.13068 163.13954)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 346.726 153.336 L 410.101 153.336 C 414.976 153.336 414.976 153.336 414.976 155.51708 L 414.976 154.42654 C 417.4135 154.42654 417.4135 154.42654 417.4135 156.60762 L 417.4135 155.51708 C 419.851 155.51708 419.851 155.51708 419.851 157.69816 L 419.851 186.05222 C 419.851 188.2333 419.851 188.2333 414.976 188.2333 L 351.601 188.2333 C 346.726 188.2333 346.726 188.2333 346.726 187.14276 C 344.2885 187.14276 344.2885 187.14276 344.2885 186.05222 C 341.851 186.05222 341.851 186.05222 341.851 183.87114 L 341.851 155.51708 C 341.851 153.336 341.851 153.336 346.726 153.336 Z" fill="#fefff6"/><path d="M 346.726 153.336 L 410.101 153.336 C 414.976 153.336 414.976 153.336 414.976 155.51708 L 414.976 183.87114 C 414.976 186.05222 414.976 186.05222 410.101 186.05222 L 346.726 186.05222 C 341.851 186.05222 341.851 186.05222 341.851 183.87114 L 341.851 155.51708 C 341.851 153.336 341.851 153.336 346.726 153.336 M 414.976 154.42654 C 417.4135 154.42654 417.4135 154.42654 417.4135 156.60762 L 417.4135 186.05222 C 417.4135 187.14276 417.4135 187.14276 412.5385 187.14276 L 349.1635 187.14276 C 344.2885 187.14276 344.2885 187.14276 344.2885 186.05222 M 417.4135 155.51708 C 419.851 155.51708 419.851 155.51708 419.851 157.69816 L 419.851 186.05222 C 419.851 188.2333 419.851 188.2333 414.976 188.2333 L 351.601 188.2333 C 346.726 188.2333 346.726 188.2333 346.726 187.14276" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(348.411 154.95254)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="12.334258" y="11" textLength="32.021484">native</tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.336211" y="25" textLength="24.017578">peer</tspan></text><path d="M 437.68213 285.265 L 483.20984 285.265 C 486.71197 285.265 486.71197 285.265 486.71197 287.44608 L 486.71197 286.35554 C 488.46303 286.35554 488.46303 286.35554 488.46303 288.53662 L 488.46303 287.44608 C 490.2141 287.44608 490.2141 287.44608 490.2141 289.62716 L 490.2141 317.98122 C 490.2141 320.1623 490.2141 320.1623 486.71197 320.1623 L 441.18426 320.1623 C 437.68213 320.1623 437.68213 320.1623 437.68213 319.07176 C 435.93107 319.07176 435.93107 319.07176 435.93107 317.98122 C 434.18 317.98122 434.18 317.98122 434.18 315.80014 L 434.18 287.44608 C 434.18 285.265 434.18 285.265 437.68213 285.265 Z" fill="#fefff6"/><path d="M 437.68213 285.265 L 483.20984 285.265 C 486.71197 285.265 486.71197 285.265 486.71197 287.44608 L 486.71197 315.80014 C 486.71197 317.98122 486.71197 317.98122 483.20984 317.98122 L 437.68213 317.98122 C 434.18 317.98122 434.18 317.98122 434.18 315.80014 L 434.18 287.44608 C 434.18 285.265 434.18 285.265 437.68213 285.265 M 486.71197 286.35554 C 488.46303 286.35554 488.46303 286.35554 488.46303 288.53662 L 488.46303 317.98122 C 488.46303 319.07176 488.46303 319.07176 484.9609 319.07176 L 439.4332 319.07176 C 435.93107 319.07176 435.93107 319.07176 435.93107 317.98122 M 488.46303 287.44608 C 490.2141 287.44608 490.2141 287.44608 490.2141 289.62716 L 490.2141 317.98122 C 490.2141 320.1623 490.2141 320.1623 486.71197 320.1623 L 441.18426 320.1623 C 437.68213 320.1623 437.68213 320.1623 437.68213 319.07176" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.30068 293.88154)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 437.68213 242.749 L 483.20984 242.749 C 486.71197 242.749 486.71197 242.749 486.71197 244.93008 L 486.71197 243.83954 C 488.46303 243.83954 488.46303 243.83954 488.46303 246.02062 L 488.46303 244.93008 C 490.2141 244.93008 490.2141 244.93008 490.2141 247.11116 L 490.2141 275.46522 C 490.2141 277.6463 490.2141 277.6463 486.71197 277.6463 L 441.18426 277.6463 C 437.68213 277.6463 437.68213 277.6463 437.68213 276.55576 C 435.93107 276.55576 435.93107 276.55576 435.93107 275.46522 C 434.18 275.46522 434.18 275.46522 434.18 273.28414 L 434.18 244.93008 C 434.18 242.749 434.18 242.749 437.68213 242.749 Z" fill="#fefff6"/><path d="M 437.68213 242.749 L 483.20984 242.749 C 486.71197 242.749 486.71197 242.749 486.71197 244.93008 L 486.71197 273.28414 C 486.71197 275.46522 486.71197 275.46522 483.20984 275.46522 L 437.68213 275.46522 C 434.18 275.46522 434.18 275.46522 434.18 273.28414 L 434.18 244.93008 C 434.18 242.749 434.18 242.749 437.68213 242.749 M 486.71197 243.83954 C 488.46303 243.83954 488.46303 243.83954 488.46303 246.02062 L 488.46303 275.46522 C 488.46303 276.55576 488.46303 276.55576 484.9609 276.55576 L 439.4332 276.55576 C 435.93107 276.55576 435.93107 276.55576 435.93107 275.46522 M 488.46303 244.93008 C 490.2141 244.93008 490.2141 244.93008 490.2141 247.11116 L 490.2141 275.46522 C 490.2141 277.6463 490.2141 277.6463 486.71197 277.6463 L 441.18426 277.6463 C 437.68213 277.6463 437.68213 277.6463 437.68213 276.55576" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(440.30068 251.36554)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.953601" y="11" textLength="10.001953">...</tspan></text><path d="M 482.577 248.71725 L 532.32068 248.71725 L 532.32068 239.137 L 548.9019 258.2975 L 532.32068 277.458 L 532.32068 267.87775 L 482.577 267.87775 Z" fill="#ebe8ff"/><path d="M 482.577 248.71725 L 532.32068 248.71725 L 532.32068 239.137 L 548.9019 258.2975 L 532.32068 277.458 L 532.32068 267.87775 L 482.577 267.87775 Z" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="439.75" y="31.1434" width="73" height="16" fill="white"/><text transform="translate(444.75 31.1434)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="62.149902">extensions</tspan></text><g id="id10_Graphic"><path d="M 277.115 548.62458 L 277.115 511.94762 C 277.115 509.4169 287.67938 507.363 300.6962 507.363 C 313.71302 507.363 324.2774 509.4169 324.2774 511.94762 L 324.2774 548.62458 C 324.2774 551.1553 313.71302 553.2092 300.6962 553.2092 C 287.67938 553.2092 277.115 551.1553 277.115 548.62458" fill="white"/><path d="M 277.115 548.62458 L 277.115 511.94762 C 277.115 509.4169 287.67938 507.363 300.6962 507.363 C 313.71302 507.363 324.2774 509.4169 324.2774 511.94762 L 324.2774 548.62458 C 324.2774 551.1553 313.71302 553.2092 300.6962 553.2092 C 287.67938 553.2092 277.115 551.1553 277.115 548.62458 M 277.115 511.94762 C 277.115 514.47833 287.67938 516.53224 300.6962 516.53224 C 313.71302 516.53224 324.2774 514.47833 324.2774 511.94762" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(282.115 524.0784)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.5191883" y="14" textLength="24.124023">*.jpf</tspan></text></g><g id="id312_Graphic"><rect x="407.819" y="548.116" width="1.0188" height=".125" fill="white"/><rect x="407.819" y="548.116" width="1.0188" height=".125" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 77.7265 380.014 L 77.7265 519.852 C 77.7265 527.584 83.994514 533.852 91.7265 533.852 L 257.324 533.852" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 422.082 415.5 L 421.1825 519.97253 C 421.11634 527.6572 414.86798 533.852 407.18302 533.852 L 344.365 533.852" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 336.8 397.341 L 336.8 401.679 C 336.8 409.41099 343.06801 415.679 350.8 415.679 L 473.80245 415.679 C 481.53444 415.679 487.80245 409.41099 487.80245 401.679 C 487.80245 401.41993 487.79526 401.16092 487.7809 400.90225 L 487.583 397.341" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><line x1="299.826" y1="501.253" x2="298.89868" y2="401.12458" marker-end="url(#Arrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(327.878 553.383)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="54.183594">JPF confi</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="54.183594" y="13" textLength="46.979004">guration</tspan></text><text transform="translate(496.924 250.84)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x=".32617188" y="11" textLength="31.347656">report</tspan></text><path d="M 139.874 445.218 L 99.1214 445.218 L 99.1214 291.09" marker-end="url(#FilledArrow_Marker_6)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 207.836 451.331 L 245.532 451.331 L 245.532 442.89" marker-end="url(#FilledArrow_Marker_6)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(202.648 452.006)" fill="blue"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="13" textLength="50.59082">standard</tspan><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" fill="blue" x="0" y="29" textLength="76.584473">Java libraries</tspan></text><g filter="url(#Shadow_2)"><path d="M 152.821 462.01758 L 152.821 425.34062 C 152.821 422.8099 163.38538 420.756 176.4022 420.756 C 189.41902 420.756 199.9834 422.8099 199.9834 425.34062 L 199.9834 462.01758 C 199.9834 464.5483 189.41902 466.6022 176.4022 466.6022 C 163.38538 466.6022 152.821 464.5483 152.821 462.01758" fill="white"/><path d="M 152.821 462.01758 L 152.821 425.34062 C 152.821 422.8099 163.38538 420.756 176.4022 420.756 C 189.41902 420.756 199.9834 422.8099 199.9834 425.34062 L 199.9834 462.01758 C 199.9834 464.5483 189.41902 466.6022 176.4022 466.6022 C 163.38538 466.6022 152.821 464.5483 152.821 462.01758 M 152.821 425.34062 C 152.821 427.87133 163.38538 429.92524 176.4022 429.92524 C 189.41902 429.92524 199.9834 427.87133 199.9834 425.34062" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(157.821 437.4714)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.1329578" y="14" textLength="24.896484">*.jar</tspan></text></g><g id="id320_Graphic"><path d="M 147.727 455.90558 L 147.727 419.22862 C 147.727 416.6979 158.29138 414.644 171.3082 414.644 C 184.32502 414.644 194.8894 416.6979 194.8894 419.22862 L 194.8894 455.90558 C 194.8894 458.4363 184.32502 460.4902 171.3082 460.4902 C 158.29138 460.4902 147.727 458.4363 147.727 455.90558" fill="white"/><path d="M 147.727 455.90558 L 147.727 419.22862 C 147.727 416.6979 158.29138 414.644 171.3082 414.644 C 184.32502 414.644 194.8894 416.6979 194.8894 419.22862 L 194.8894 455.90558 C 194.8894 458.4363 184.32502 460.4902 171.3082 460.4902 C 158.29138 460.4902 147.727 458.4363 147.727 455.90558 M 147.727 419.22862 C 147.727 421.75933 158.29138 423.81324 171.3082 423.81324 C 184.32502 423.81324 194.8894 421.75933 194.8894 419.22862" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(152.727 431.3594)" fill="black"><tspan font-family="Helvetica" font-size="14" font-weight="500" x="6.1329578" y="14" textLength="24.896484">*.jar</tspan></text></g></g></g></svg>
diff --git a/doc/graphics/jpf-layers.svg b/doc/graphics/jpf-layers.svg
deleted file mode 100644 (file)
index ada4957..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="8 66 540 266" width="45pc" height="266pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 21:48:18 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="red"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="14" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-857.14286" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="576" height="734"/><g><title>Layer 1</title><g><xl:use xl:href="#id1_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id30_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id4_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id6_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id9_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id11_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id14_Graphic" filter="url(#Shadow)"/></g><g id="id1_Graphic"><rect x="100" y="281" width="287" height="34" fill="white"/><rect x="100" y="281" width="287" height="34" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(105 291)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="106.490234" y="11" textLength="64.01953">platform OS</tspan></text></g><g id="id30_Graphic"><path d="M 165 208 L 325 208 L 324 273 L 301 273 L 301 232 L 189 232 L 189 273 L 165 273 Z" fill="white"/><path d="M 165 208 L 325 208 L 324 273 L 301 273 L 301 232 L 189 232 L 189 273 L 165 273 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(217.5 213.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".4921875" y="11" textLength="50.015625">host JVM</tspan></text><g id="id4_Graphic"><path d="M 204 241 L 282 241 C 288 241 288 241 288 243.125 L 288 242.0625 C 291 242.0625 291 242.0625 291 244.1875 L 291 243.125 C 294 243.125 294 243.125 294 245.25 L 294 272.875 C 294 275 294 275 288 275 L 210 275 C 204 275 204 275 204 273.9375 C 201 273.9375 201 273.9375 201 272.875 C 198 272.875 198 272.875 198 270.75 L 198 243.125 C 198 241 198 241 204 241 Z" fill="white"/><path d="M 204 241 L 282 241 C 288 241 288 241 288 243.125 L 288 270.75 C 288 272.875 288 272.875 282 272.875 L 204 272.875 C 198 272.875 198 272.875 198 270.75 L 198 243.125 C 198 241 198 241 204 241 M 288 242.0625 C 291 242.0625 291 242.0625 291 244.1875 L 291 272.875 C 291 273.9375 291 273.9375 285 273.9375 L 207 273.9375 C 201 273.9375 201 273.9375 201 272.875 M 291 243.125 C 294 243.125 294 243.125 294 245.25 L 294 272.875 C 294 275 294 275 288 275 L 210 275 C 204 275 204 275 204 273.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 242.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="20.029258" y="11" textLength="35.355469">native </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="15.034141" y="25" textLength="42.01172">libraries</tspan></text></g><rect x="100" y="228" width="287" height="18" fill="red" fill-opacity=".09"/><rect x="100" y="228" width="287" height="18" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id6_Graphic"><path d="M 204 167 L 282 167 C 288 167 288 167 288 169.125 L 288 168.0625 C 291 168.0625 291 168.0625 291 170.1875 L 291 169.125 C 294 169.125 294 169.125 294 171.25 L 294 198.875 C 294 201 294 201 288 201 L 210 201 C 204 201 204 201 204 199.9375 C 201 199.9375 201 199.9375 201 198.875 C 198 198.875 198 198.875 198 196.75 L 198 169.125 C 198 167 198 167 204 167 Z" fill="white"/><path d="M 204 167 L 282 167 C 288 167 288 167 288 169.125 L 288 196.75 C 288 198.875 288 198.875 282 198.875 L 204 198.875 C 198 198.875 198 198.875 198 196.75 L 198 169.125 C 198 167 198 167 204 167 M 288 168.0625 C 291 168.0625 291 168.0625 291 170.1875 L 291 198.875 C 291 199.9375 291 199.9375 285 199.9375 L 207 199.9375 C 201 199.9375 201 199.9375 201 198.875 M 291 169.125 C 294 169.125 294 169.125 294 171.25 L 294 198.875 C 294 201 294 201 288 201 L 210 201 C 204 201 204 201 204 199.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 168.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="19.704062" y="11" textLength="36.00586">library </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.033164" y="25" textLength="40.013672">classes</tspan></text></g><path d="M 165 136 L 325 136 L 324 201 L 301 201 L 301 160 L 189 160 L 189 201 L 165 201 Z" fill="yellow"/><path d="M 165 136 L 325 136 L 324 201 L 301 201 L 301 160 L 189 160 L 189 201 L 165 201 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(179.5 140.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".14160156" y="11" textLength="118.7168">JPF (Java application)</tspan></text><g id="id9_Graphic"><path d="M 204 95 L 282 95 C 288 95 288 95 288 97.125 L 288 96.0625 C 291 96.0625 291 96.0625 291 98.1875 L 291 97.125 C 294 97.125 294 97.125 294 99.25 L 294 126.875 C 294 129 294 129 288 129 L 210 129 C 204 129 204 129 204 127.9375 C 201 127.9375 201 127.9375 201 126.875 C 198 126.875 198 126.875 198 124.75 L 198 97.125 C 198 95 198 95 204 95 Z" fill="white"/><path d="M 204 95 L 282 95 C 288 95 288 95 288 97.125 L 288 124.75 C 288 126.875 288 126.875 282 126.875 L 204 126.875 C 198 126.875 198 126.875 198 124.75 L 198 97.125 C 198 95 198 95 204 95 M 288 96.0625 C 291 96.0625 291 96.0625 291 98.1875 L 291 126.875 C 291 127.9375 291 127.9375 285 127.9375 L 207 127.9375 C 201 127.9375 201 127.9375 201 126.875 M 291 97.125 C 294 97.125 294 97.125 294 99.25 L 294 126.875 C 294 129 294 129 288 129 L 210 129 C 204 129 204 129 204 127.9375" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(204.92 96.215)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="13.024375" y="11" textLength="49.365234">modeled </tspan><tspan font-family="Helvetica" font-size="12" font-weight="500" x="16.033164" y="25" textLength="40.013672">classes</tspan></text></g><rect x="100" y="123" width="287" height="18" fill="red" fill-opacity=".2"/><rect x="100" y="123" width="287" height="18" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><g id="id11_Graphic"><path d="M 465 203.2 L 465 172.8 C 465 170.7024 475.528 169 488.5 169 C 501.472 169 512 170.7024 512 172.8 L 512 203.2 C 512 205.2976 501.472 207 488.5 207 C 475.528 207 465 205.2976 465 203.2" fill="white"/><path d="M 465 203.2 L 465 172.8 C 465 170.7024 475.528 169 488.5 169 C 501.472 169 512 170.7024 512 172.8 L 512 203.2 C 512 205.2976 501.472 207 488.5 207 C 475.528 207 465 205.2976 465 203.2 M 465 172.8 C 465 174.8976 475.528 176.6 488.5 176.6 C 501.472 176.6 512 174.8976 512 172.8" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(470 182.9)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="6.5" y="11" textLength="24">rt.jar</tspan></text></g><path d="M 464.51608 194.23311 C 443.01287 199.82151 425.91675 206.03935 400 211 C 374.08325 215.96065 330.83115 228.3329 309 224 C 291.02341 220.43213 284.5698 205.10993 275.4076 192.55293" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><path d="M 464.5003 187.15195 C 425.33746 185.76811 380.41338 195.52407 347 183 C 316.59513 171.60358 295.70486 141.75243 271.34544 118.638844" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><g id="id14_Graphic"><path d="M 465 152.2 L 465 121.8 C 465 119.7024 475.528 118 488.5 118 C 501.472 118 512 119.7024 512 121.8 L 512 152.2 C 512 154.2976 501.472 156 488.5 156 C 475.528 156 465 154.2976 465 152.2" fill="white"/><path d="M 465 152.2 L 465 121.8 C 465 119.7024 475.528 118 488.5 118 C 501.472 118 512 119.7024 512 121.8 L 512 152.2 C 512 154.2976 501.472 156 488.5 156 C 475.528 156 465 154.2976 465 152.2 M 465 121.8 C 465 123.8976 475.528 125.6 488.5 125.6 C 501.472 125.6 512 123.8976 512 121.8" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><path d="M 464.51156 142.2503 C 428.34466 150.166075 387.9154 172.37441 356 166 C 327.09537 160.22692 305.15832 131.006355 280.72651 110.193924" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="2,2"/><text transform="translate(104.5 227.125)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x=".106933594" y="14" textLength="21.786133">JNI</tspan></text><text transform="translate(104.5 122.125)" fill="red"><tspan font-family="Helvetica" font-size="14" font-weight="bold" fill="red" x=".33105469" y="14" textLength="23.33789">MJI</tspan></text><text transform="translate(470.5 131.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x=".328125" y="11" textLength="35.34375">*.class</tspan></text><text transform="translate(439 95.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".14746094" y="11" textLength="94.70508">system under test</tspan></text><text transform="translate(450.5 212.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="1.8095703" y="11" textLength="78.714844">standard Java </tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x="11.149414" y="25" textLength="56.701172">installation</tspan></text><text transform="translate(411.5 219.125) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-weight="500" x=".30761719" y="13" textLength="51.301758">CLASSP</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="50.65088" y="13" textLength="8.6708984">A</tspan><tspan font-family="Helvetica" font-size="13" font-weight="500" x="58.36328" y="13" textLength="17.329102">TH</tspan></text><line x1="57" y1="205" x2="366" y2="205" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><line x1="57" y1="132" x2="92" y2="132" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><line x1="138" y1="132" x2="365" y2="132" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="8,4,1,4"/><text transform="translate(54.5 75.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".31738281" y="14" textLength="72.365234">Model layer</tspan></text><text transform="translate(54.5 160.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".09667969" y="14" textLength="63.80664">Java layer</tspan></text><text transform="translate(54.5 256.125)" fill="black"><tspan font-family="Helvetica" font-size="14" font-style="italic" font-weight="500" x=".041503906" y="14" textLength="73.91699">Native layer</tspan></text><text transform="translate(22.5 214.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".37890625" y="11" textLength="121.24219">&quot;Java Native Interface&quot;</tspan></text><text transform="translate(22.5 109.125)" fill="black"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" x=".043945312" y="11" textLength="119.91211">&quot;Model Java Interface&quot;</tspan></text></g></g></svg>
diff --git a/doc/graphics/jpf-project.svg b/doc/graphics/jpf-project.svg
deleted file mode 100644 (file)
index 790b51b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="46 25 545 750" width="545pt" height="750pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2009-09-09 23:36:00 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Lucida Grande" font-size="10" panose-1="2 11 6 0 4 5 2 2 2 4" units-per-em="1000" underline-position="-97.65625" underline-thickness="48.828125" slope="0" x-height="530.27344" cap-height="722.65625" ascent="966.7969" descent="-210.9375" font-weight="500"><font-face-src><font-face-name name="LucidaGrande"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1200" x-height="539.55078" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="bold"><font-face-src><font-face-name name="Helvetica-BoldOblique"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="13" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-923.0769" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="red"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="11" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1090.9091" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="588.0188" height="768.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id111_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id106_Graphic" filter="url(#Shadow)"/></g><g id="id111_Graphic"><path d="M 68.5938 640.352 L 229.3748 640.352 C 232.68851 640.352 235.3748 643.0383 235.3748 646.352 L 235.3748 751.813 C 235.3748 755.1267 232.68851 757.813 229.3748 757.813 L 68.5938 757.813 C 65.28009 757.813 62.5938 755.1267 62.5938 751.813 L 62.5938 646.352 C 62.5938 643.0383 65.28009 640.352 68.5938 640.352 Z" fill="#ebffed"/><path d="M 68.5938 640.352 L 229.3748 640.352 C 232.68851 640.352 235.3748 643.0383 235.3748 646.352 L 235.3748 751.813 C 235.3748 755.1267 232.68851 757.813 229.3748 757.813 L 68.5938 757.813 C 65.28009 757.813 62.5938 755.1267 62.5938 751.813 L 62.5938 646.352 C 62.5938 643.0383 65.28009 640.352 68.5938 640.352 Z" stroke="#9cffb1" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g id="id106_Graphic"><path d="M 69.335548 61.38315 L 186.93809 61.38416 C 190.2518 61.384188 192.93807 64.070502 192.93804 67.38421 C 192.93804 67.38427 192.93804 67.384327 192.93804 67.384385 L 192.93781 73.569708 C 192.93769 76.88329 190.25149 79.56943 186.93791 79.569483 L 97.390935 79.57095 C 94.077265 79.571007 91.391034 82.25728 91.391034 85.57095 L 91.391034 388.09394 C 91.391034 391.39507 94.057715 394.07612 97.35879 394.09386 L 226.37644 394.78716 C 229.67752 394.8049 232.3442 397.48595 232.3442 400.78708 L 232.3442 493.42925 C 232.3442 496.73035 229.67755 499.4114 226.3765 499.42916 L 97.358877 500.1237 C 94.057834 500.14146 91.39119 502.82248 91.391176 506.12357 L 91.39106 529.77343 C 91.391047 533.08714 94.077325 535.77345 97.391034 535.77346 C 97.391053 535.77346 97.39107 535.77346 97.39109 535.77346 L 199.82096 535.77296 C 203.13467 535.77295 205.82097 538.45923 205.82099 541.77294 C 205.82099 541.773 205.82099 541.77308 205.82099 541.77315 L 205.82084 546.65464 C 205.82074 549.95652 203.1528 552.6378 199.85096 552.65438 L 96.69789 553.1722 C 93.38422 553.18885 90.71145 555.8886 90.728084 559.20226 C 90.728193 559.22398 90.72842 559.2457 90.728765 559.26742 L 91.297165 595.05585 C 91.349097 598.3257 94.01001 600.95175 97.28028 600.96055 L 155.35214 601.11666 C 158.53473 601.1252 161.15693 603.61723 161.3274 606.79526 L 161.52812 610.5372 C 161.70561 613.84616 159.16706 616.67248 155.858105 616.84997 C 155.75109 616.8557 155.64393 616.85858 155.53676 616.85858 L 67.852627 616.85907 C 64.53892 616.8591 61.852612 614.1728 61.852594 610.8591 C 61.852594 610.85363 61.8526 610.84816 61.852616 610.8427 L 63.33552 67.36678 C 63.344543 64.059455 66.02821 61.383123 69.335548 61.38315 Z" fill="#fffbe6"/><path d="M 69.335548 61.38315 L 186.93809 61.38416 C 190.2518 61.384188 192.93807 64.070502 192.93804 67.38421 C 192.93804 67.38427 192.93804 67.384327 192.93804 67.384385 L 192.93781 73.569708 C 192.93769 76.88329 190.25149 79.56943 186.93791 79.569483 L 97.390935 79.57095 C 94.077265 79.571007 91.391034 82.25728 91.391034 85.57095 L 91.391034 388.09394 C 91.391034 391.39507 94.057715 394.07612 97.35879 394.09386 L 226.37644 394.78716 C 229.67752 394.8049 232.3442 397.48595 232.3442 400.78708 L 232.3442 493.42925 C 232.3442 496.73035 229.67755 499.4114 226.3765 499.42916 L 97.358877 500.1237 C 94.057834 500.14146 91.39119 502.82248 91.391176 506.12357 L 91.39106 529.77343 C 91.391047 533.08714 94.077325 535.77345 97.391034 535.77346 C 97.391053 535.77346 97.39107 535.77346 97.39109 535.77346 L 199.82096 535.77296 C 203.13467 535.77295 205.82097 538.45923 205.82099 541.77294 C 205.82099 541.773 205.82099 541.77308 205.82099 541.77315 L 205.82084 546.65464 C 205.82074 549.95652 203.1528 552.6378 199.85096 552.65438 L 96.69789 553.1722 C 93.38422 553.18885 90.71145 555.8886 90.728084 559.20226 C 90.728193 559.22398 90.72842 559.2457 90.728765 559.26742 L 91.297165 595.05585 C 91.349097 598.3257 94.01001 600.95175 97.28028 600.96055 L 155.35214 601.11666 C 158.53473 601.1252 161.15693 603.61723 161.3274 606.79526 L 161.52812 610.5372 C 161.70561 613.84616 159.16706 616.67248 155.858105 616.84997 C 155.75109 616.8557 155.64393 616.85858 155.53676 616.85858 L 67.852627 616.85907 C 64.53892 616.8591 61.852612 614.1728 61.852594 610.8591 C 61.852594 610.85363 61.8526 610.84816 61.852616 610.8427 L 63.33552 67.36678 C 63.344543 64.059455 66.02821 61.383123 69.335548 61.38315 Z" stroke="#fffbe6" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><text transform="translate(86.8516 34.6328)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="24.438477">jpf-X</tspan></text><text transform="translate(122 91)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="16.516113">src</tspan></text><text transform="translate(122 253)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="26.27002">build</tspan></text><text transform="translate(122 226)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="43.403809">build.xml</tspan></text><text transform="translate(122 64)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="63.58838">jpf.properties</tspan></text><text transform="translate(140 397.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="blue" x="0" y="10" textLength="23.847656">X.jar</tspan></text><text transform="translate(140 415.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="bold" fill="blue" x="0" y="10" textLength="67.27295">X-classes.jar</tspan></text><text transform="translate(140 433.094)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="83.160645">X-annotations.jar</tspan></text><text transform="translate(149 109)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.842285">main</tspan></text><text transform="translate(149 127)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="27.516113">peers</tspan></text><text transform="translate(149 145)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="36.6792">classes</tspan></text><text transform="translate(149 163)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="56.879883">annotations</tspan></text><text transform="translate(149 181)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.22998">tests</tspan></text><text transform="translate(149 199)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="47.077637">examples</tspan></text><text transform="translate(122 460.094)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="12.831543">lib</tspan></text><text transform="translate(122 505.281)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="26.27539">tools</tspan></text><text transform="translate(122 583.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="bold" x="0" y="10" textLength="16.494629">bin</tspan></text><text transform="translate(140 538.438)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="39.735352">RunJPF</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="38.516113" y="10" textLength="15.280762">.jar</tspan></text><text transform="translate(140 556.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="51.970703">RunAnt.jar</tspan></text><text transform="translate(140 601.438)" fill="blue"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="11.617676">jpf</tspan></text><text transform="translate(140 619.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="15.291504">ant</tspan></text><text transform="translate(122 646.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="45.251465">nbproject</tspan></text><text transform="translate(140 664.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="53.1792">project.xml</tspan></text><text transform="translate(140 682.438)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="23.842285">ide-fi</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" x="23.842285" y="10" textLength="66.016113">le-targets.xml</tspan></text><text transform="translate(122 704.983)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="49.526855">.classpath</tspan></text><line x1="99.348286" y1="47.6328" x2="99" y2="730.842" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="130.445744" y1="104" x2="129.591" y2="206.401" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144" y1="115.48059" x2="130.350046" y2="115.465" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="133.637" x2="129.591" y2="133.674" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="151.818" x2="129.591" y2="151.855" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="170" x2="129.591" y2="170.037" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="188.182" x2="129.591" y2="188.219" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="206.364" x2="129.591" y2="206.401" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(149.091 271.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="23.842285">main</tspan></text><text transform="translate(149.091 289.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="27.516113">peers</tspan></text><text transform="translate(149.091 307.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="36.6792">classes</tspan></text><text transform="translate(149.091 325.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="56.879883">annotations</tspan></text><text transform="translate(149.091 343.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="23.22998">tests</tspan></text><text transform="translate(149.091 361.09)" fill="#626262"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#626262" x="0" y="10" textLength="47.077637">examples</tspan></text><line x1="129.596" y1="266.09" x2="129.682" y2="368.491" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.091" y1="277.5711" x2="129.60563" y2="277.555" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="295.727" x2="129.682" y2="295.764" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="313.908" x2="129.682" y2="313.945" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="332.09" x2="129.682" y2="332.127" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="350.272" x2="129.682" y2="350.309" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="144.182" y1="368.454" x2="129.682" y2="368.491" stroke="#626262" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.091" y1="259.597" x2="99.5542" y2="259.652" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="466.795" x2="99.6451" y2="466.85" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="512.177" x2="99.6451" y2="512.232" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="590.608" x2="99.6451" y2="590.663" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="117.182" y1="653.926" x2="99.6451" y2="653.981" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(122.091 723.075)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="34.240723">eclipse</tspan></text><line x1="117.273" y1="730.564" x2="99.736" y2="730.619" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(140.091 741.075)" fill="black"><tspan font-family="Helvetica" font-size="11" font-weight="500" x="0" y="10" textLength="66.649902">run-jpf.launch</tspan></text><text transform="translate(250.984 58.6875)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.5957">JPF project properties fi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="105.5957" y="10" textLength="7.783203">le</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="22" textLength="58.911133">(runtime def: </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="58.911133" y="22" textLength="74.492188">native_classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="133.40332" y="22" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="138.95996" y="22" textLength="42.246094">classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="181.20605" y="22" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="186.7627" y="22" textLength="49.47754">sourcepath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="236.24023" y="22" textLength="3.3300781">)</tspan></text><text transform="translate(278.93 107.57)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="246.20117">host-VM executed classes (listeners, infrastructure etc.)</tspan></text><text transform="translate(279.023 125.664)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="229.52637">host-VM executed library classes (MJI native peers)</tspan></text><text transform="translate(279.117 144.258)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="135.60547">JPF executed library classes   </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="135.60547" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="145.60547" y="10" textLength="49.47754">sourcepath</tspan></text><text transform="translate(279.211 161.852)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="145.08301">JPF processed Java annotations</tspan></text><text transform="translate(279.305 179.945)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="70.585938">regression tests</tspan></text><text transform="translate(279.398 198.539)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="35.57129">demos  </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="35.57129" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="45.57129" y="10" textLength="49.47754">sourcepath</tspan></text><text transform="translate(251.641 225.133)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="71.694336">Ant build script (</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="71.694336" y="10" textLength="34.458008">compile</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="106.152344" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="111.708984" y="10" textLength="21.12793">build</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="132.836914" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="138.393555" y="10" textLength="16.118164">test</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="154.51172" y="10" textLength="5.5566406">, </tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="red" x="160.06836" y="10" textLength="23.90625">clean</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="183.97461" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(263.414 305.969)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="140.60059">temporary build artifacts (classfi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="140.60059" y="10" textLength="16.113281">les)</tspan></text><text transform="translate(278.734 397.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="210.08789">main host-VM executed project jar (main,peers </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="210.08789" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="220.08789" y="10" textLength="74.492188">native_classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="294.58008" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(278.828 415.594)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="201.75781">JPF executed library jar (classes,annotations </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="201.75781" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="211.75781" y="10" textLength="42.246094">classpath</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="254.0039" y="10" textLength="3.3300781">)</tspan></text><text transform="translate(278.922 433.188)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="201.20117">separate anotations jar (for JPF external SUT</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="201.02539" y="10" textLength="27.231445"> exec)</tspan></text><text transform="translate(252.016 460.781)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="97.26074">required runtime jars  </tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" fill="#20a356" x="97.26074" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" fill="#20a356" x="107.26074" y="10" textLength="74.492188">native_classpath</tspan></text><text transform="translate(252.109 502.531)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="45.029297">build tools</tspan></text><text transform="translate(140.094 520.531)" fill="#404040"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="0" y="10" textLength="30.572266">ant.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="29.970703" y="10" textLength="41.572266">, junit.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="70.941406" y="10" textLength="15.280762">, ...</tspan></text><text transform="translate(140.188 477.898)" fill="#404040"><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="0" y="10" textLength="35.45996">bcel.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="34.858398" y="10" textLength="27.510742">, antlr</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="61.767578" y="10" textLength="15.280762">.jar</tspan><tspan font-family="Helvetica" font-size="11" font-weight="500" fill="#404040" x="76.446777" y="10" textLength="12.2246094">, ..</tspan></text><text transform="translate(279.203 478.375)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.59082">(example) 3rd party jars</tspan></text><text transform="translate(250.531 253.578)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="58.916016">build artifacts</tspan></text><text transform="translate(264.836 379.477)" fill="blue"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="bold" fill="blue" x="0" y="10" textLength="119.46777">permanent build artifacts</tspan></text><text transform="translate(278.539 521.195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="105.59082">(example) 3rd party jars</tspan></text><text transform="translate(278.539 537.391)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="122.82715">JPF startup jar (executable)</tspan></text><text transform="translate(278.633 555.484)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="113.38379">JPF build jar (executable)</tspan></text><text transform="translate(252.203 583.625)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="28.891602">scripts</tspan></text><text transform="translate(279.391 600.984)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="83.90625">JPF startup script (</tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" x="83.90625" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="93.90625" y="10" textLength="36.123047">RunJPF</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="128.9209" y="10" textLength="17.22168">.jar)</tspan></text><text transform="translate(279.485 619.077)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="74.46289">JPF build script (</tspan><tspan font-family="Lucida Grande" font-size="10" font-weight="500" x="74.46289" y="10" textLength="10">→</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="84.46289" y="10" textLength="50.576172">RunAnt.jar)</tspan></text><text transform="translate(252.391 704.602)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="88.930664">Eclipse project confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="88.930664" y="10" textLength="36.137695">guration</tspan></text><line x1="117.185" y1="97.5308" x2="99.6479" y2="97.5858" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(250.625 91.5547)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="67.807617">project sources</tspan></text><text transform="translate(227.414 34.7109)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="91.14746">project root directory</tspan></text><text transform="translate(69.6719 415.508) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" x="0" y="13" textLength="101.88623">binary distribution</tspan></text><text transform="translate(252.484 663.562)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="100.61035">NetBeans project confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="100.61035" y="10" textLength="36.137695">guration</tspan></text><text transform="translate(252.578 681.656)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="51.694336">NetBeans fi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="51.694336" y="10" textLength="115.04883">le actions (JPF execution)</tspan></text><text transform="translate(252.672 740.961)" fill="black"><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="0" y="10" textLength="88.38379">Eclipse launch confi</tspan><tspan font-family="Helvetica" font-size="10" font-style="italic" font-weight="500" x="88.38379" y="10" textLength="83.36426">gs (JPF execution)</tspan></text><text transform="translate(71.2344 731.805) rotate(-90)" fill="black"><tspan font-family="Helvetica" font-size="13" font-style="italic" font-weight="500" x="0" y="13" textLength="68.643555">IDE support</tspan></text><path d="M 204.516 159.898 L 215.25 159.898 C 221.87742 159.898 227.25 165.27058 227.25 171.898 L 227.25 308.86879 C 227.25 315.4962 221.87742 320.86879 215.25 320.86879 C 215.13236 320.86879 215.01472 320.86706 214.89713 320.8636 L 211.37972 320.76012" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 231.134 319.703 L 241.868 319.703 C 248.49542 319.703 253.868 325.07558 253.868 331.703 L 253.868 401.31326 C 253.868 407.94068 248.49542 413.31326 241.868 413.31326 C 241.75051 413.31326 241.63303 413.31154 241.5156 413.3081 L 237.99773 413.20473" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(212.578 256.102) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="37.903809">compile</tspan></text><text transform="translate(239.586 371.32) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="23.240723">build</tspan></text><path d="M 198.548 409.218 L 209.282 409.218 C 215.90942 409.218 221.282 403.84542 221.282 397.218 L 221.282 363.27672 C 221.282 356.78689 216.12235 351.473 209.63534 351.28192 L 205.41171 351.1575" marker-end="url(#FilledArrow_Marker)" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(207.5 387.266) rotate(-90)" fill="red"><tspan font-family="Helvetica" font-size="11" font-style="italic" font-weight="500" fill="red" x="0" y="10" textLength="17.72998">test</tspan></text></g></g></svg>
diff --git a/doc/graphics/listener-overview.svg b/doc/graphics/listener-overview.svg
deleted file mode 100644 (file)
index 8a58bd9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="63 56 639 340" width="639pt" height="340pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.1 <dc:date>2014-12-02 07:42:37 +0000</dc:date></metadata><defs><filter id="Shadow" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="gray" result="flood"/><feComposite in="flood" in2="offset" operator="in"/></filter><filter id="Shadow_2" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/><feOffset in="blur" result="offset" dx="0" dy="2"/><feFlood flood-color="black" flood-opacity=".5" result="flood"/><feComposite in="flood" in2="offset" operator="in" result="color"/><feMerge><feMergeNode in="color"/><feMergeNode in="SourceGraphic"/></feMerge></filter><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="532.22656" cap-height="719.72656" ascent="770.01953" descent="-229.98047" font-weight="bold"><font-face-src><font-face-name name="Helvetica-Bold"/></font-face-src></font-face><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="blue"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="Arrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="none" stroke="currentColor" stroke-width="1"/></g></marker><font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="-1e3" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-style="italic" font-weight="500"><font-face-src><font-face-name name="Helvetica-Oblique"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-178.22266" underline-thickness="57.617188" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="500"><font-face-src><font-face-name name="Courier"/></font-face-src></font-face><font-face font-family="Courier" font-size="11" units-per-em="1000" underline-position="-144.04297" underline-thickness="91.796875" slope="0" x-height="462.40234" cap-height="594.72656" ascent="753.90625" descent="-246.09375" font-weight="bold"><font-face-src><font-face-name name="Courier-Bold"/></font-face-src></font-face><font-face font-family="Apple Symbols" font-size="12" panose-1="2 0 0 0 0 0 0 0 0 0" units-per-em="1000" underline-position="-73.242188" underline-thickness="48.828125" slope="0" x-height="392.57812" cap-height="546.38672" ascent="666.5039" descent="-250" font-weight="500"><font-face-src><font-face-name name="AppleSymbols"/></font-face-src></font-face></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="768.0188" height="588.0188"/><g><title>Layer 1</title><g><xl:use xl:href="#id25_Graphic" filter="url(#Shadow)"/><xl:use xl:href="#id26_Graphic" filter="url(#Shadow)"/></g><g filter="url(#Shadow_2)"><path d="M 107.658 161.374 L 226.991 161.374 C 229.75242 161.374 231.991 163.61258 231.991 166.374 L 231.991 337.001 C 231.991 339.76242 229.75242 342.001 226.991 342.001 L 107.658 342.001 C 104.896576 342.001 102.658 339.76242 102.658 337.001 L 102.658 166.374 C 102.658 163.61258 104.896576 161.374 107.658 161.374 Z" fill="#ffffcd"/><path d="M 107.658 161.374 L 226.991 161.374 C 229.75242 161.374 231.991 163.61258 231.991 166.374 L 231.991 337.001 C 231.991 339.76242 229.75242 342.001 226.991 342.001 L 107.658 342.001 C 104.896576 342.001 102.658 339.76242 102.658 337.001 L 102.658 166.374 C 102.658 163.61258 104.896576 161.374 107.658 161.374 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g><g filter="url(#Shadow_2)"><rect x="122.867" y="292.563" width="90" height="36" fill="white"/><rect x="122.867" y="292.563" width="90" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.867 303.563)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="19.987305" y="11" textLength="40.02539">Search</tspan></text></g><g filter="url(#Shadow_2)"><rect x="122.867" y="175.926" width="90" height="36" fill="white"/><rect x="122.867" y="175.926" width="90" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(127.867 186.926)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="31" y="11" textLength="18">VM</tspan></text></g><text transform="translate(119.191 239.52)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x=".49609375" y="11" textLength="22.007812">JPF</tspan></text><line x1="75.175" y1="136.649" x2="404.976" y2="136.649" stroke="red" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke-dasharray="8,4,1,4"/><rect x="106.7" y="74.525" width="121.25" height="36" fill="#ffe2dc"/><rect x="106.7" y="74.525" width="121.25" height="36" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(111.7 85.525)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="500" x="7.270508" y="11" textLength="96.708984">System under test</tspan></text><path d="M 274.98012 238.271 L 373.49575 238.271 C 381.07388 238.271 381.07388 238.271 381.07388 240.08095 L 381.07388 239.17598 C 384.86294 239.17598 384.86294 239.17598 384.86294 240.98592 L 384.86294 240.08095 C 388.652 240.08095 388.652 240.08095 388.652 241.8909 L 388.652 265.42025 C 388.652 267.2302 388.652 267.2302 381.07388 267.2302 L 282.55825 267.2302 C 274.98012 267.2302 274.98012 267.2302 274.98012 266.32522 C 271.19106 266.32522 271.19106 266.32522 271.19106 265.42025 C 267.402 265.42025 267.402 265.42025 267.402 263.6103 L 267.402 240.08095 C 267.402 238.271 267.402 238.271 274.98012 238.271 Z" fill="#bfffbe"/><path d="M 274.98012 238.271 L 373.49575 238.271 C 381.07388 238.271 381.07388 238.271 381.07388 240.08095 L 381.07388 263.6103 C 381.07388 265.42025 381.07388 265.42025 373.49575 265.42025 L 274.98012 265.42025 C 267.402 265.42025 267.402 265.42025 267.402 263.6103 L 267.402 240.08095 C 267.402 238.271 267.402 238.271 274.98012 238.271 M 381.07388 239.17598 C 384.86294 239.17598 384.86294 239.17598 384.86294 240.98592 L 384.86294 265.42025 C 384.86294 266.32522 384.86294 266.32522 377.28481 266.32522 L 278.76919 266.32522 C 271.19106 266.32522 271.19106 266.32522 271.19106 265.42025 M 384.86294 240.08095 C 388.652 240.08095 388.652 240.08095 388.652 241.8909 L 388.652 265.42025 C 388.652 267.2302 388.652 267.2302 381.07388 267.2302 L 282.55825 267.2302 C 274.98012 267.2302 274.98012 267.2302 274.98012 266.32522" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(274.827 244.23024)" fill="black"><tspan font-family="Helvetica" font-size="12" font-weight="bold" x="22.154688" y="11" textLength="49.359375">listeners</tspan></text><path d="M 213.367 193.9258 L 328.404 193.881 L 328.11532 227.87138" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><path d="M 213.367 310.563 L 328.993 310.563 L 328.25879 277.62762" marker-end="url(#FilledArrow_Marker)" stroke="blue" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="266.902" y1="252.75231" x2="222.76794" y2="252.90316" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="167.867" y1="292.063" x2="167.867" y2="221.826" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="167.867" y1="175.926" x2="167.50956" y2="120.92478" marker-end="url(#Arrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><text transform="translate(283.027 113.374)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".31054688" y="11" textLength="89.378906">executed by JPF</tspan></text><text transform="translate(268.418 144.524)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".46972656" y="11" textLength="118.06055">executed by host JVM</tspan></text><text transform="translate(260.108 312.942)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="97.38867">search event notifi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="97.38867" y="11" textLength="38.021484">cations</tspan></text><text transform="translate(252.61 176.262)" fill="blue"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="0" y="11" textLength="112.740234">execution event notifi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="blue" x="112.740234" y="11" textLength="38.021484">cations</tspan></text><text transform="translate(402.525 247.554)" fill="red"><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x=".48046875" y="11" textLength="25.347656">confi</tspan><tspan font-family="Helvetica" font-size="12" font-style="italic" font-weight="500" fill="red" x="25.828125" y="11" textLength="30.691406">gured</tspan></text><text transform="translate(417.247 65.978)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="118.819336">- classLoaded (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="145.22363">- threadScheduled (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="138.62256">- threadNotified (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="13.2021484">- </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="13.2021484" y="62" textLength="118.819336">executeInstruction</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="132.021484" y="62" textLength="33.005371"> (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="75" textLength="13.2021484">- </tspan><tspan font-family="Courier" font-size="11" font-weight="bold" fill="blue" x="13.2021484" y="75" textLength="125.42041">instructionExecuted</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="138.62256" y="75" textLength="33.005371"> (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="88" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="101" textLength="132.021484">- objectCreated (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="114" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="127" textLength="138.62256">- exceptionThrown(vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="140" textLength="33.005371">  ...</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="153" textLength="198.03223">- choiceGeneratorAdvanced (vm)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="166" textLength="33.005371">  ...</tspan></text><text transform="translate(353.977 331.014)" fill="blue"><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="10" textLength="158.42578">- stateAdvanced (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="23" textLength="178.229">- stateBacktracked (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="36" textLength="178.229">- propertyViolated (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="49" textLength="165.02686">- searchFinished (search)</tspan><tspan font-family="Courier" font-size="11" font-weight="500" fill="blue" x="0" y="62" textLength="33.005371">  ...</tspan></text><text transform="translate(469.131 248.388)" fill="red"><tspan font-family="Courier" fon