S - the type of the store returned by copy and that is used in leastUpperBound. Usually it is the implementing class itself, e.g. in T extends
     Store<T>.public interface Store<S extends Store<S>>
| Modifier and Type | Interface and Description | 
|---|---|
static class  | 
Store.FlowRule
A flow rule describes how stores flow along one edge between basic blocks. 
 | 
static class  | 
Store.Kind  | 
| Modifier and Type | Method and Description | 
|---|---|
boolean | 
canAlias(FlowExpressions.Receiver a,
        FlowExpressions.Receiver b)
Can the objects  
a and b be aliases? Returns a conservative answer (i.e.,
 returns true if not enough information is available to determine aliasing). | 
S | 
copy()  | 
S | 
leastUpperBound(S other)
Compute the least upper bound of two stores. 
 | 
void | 
visualize(CFGVisualizer<?,S,?> viz)
Delegate visualization responsibility to a visualizer. 
 | 
S | 
widenedUpperBound(S previous)
Compute an upper bound of two stores that is wider than the least upper bound of the two
 stores. 
 | 
S copy()
S leastUpperBound(S other)
Important: This method must fulfill the following contract:
this.
   other.
   this, even if the signature is
       more permissive.
   S widenedUpperBound(S previous)
Analysis. previous must be the previous store.
 A particular analysis might not require widening and should implement this method by calling leastUpperBound.
Important: This method must fulfill the following contract:
this.
   previous.
   this, even if the signature is
       more permissive.
   previous - must be the previous storeboolean canAlias(FlowExpressions.Receiver a, FlowExpressions.Receiver b)
a and b be aliases? Returns a conservative answer (i.e.,
 returns true if not enough information is available to determine aliasing).void visualize(CFGVisualizer<?,S,?> viz)
viz - the visualizer to visualize this store