S - the Store used to keep track of intermediate resultspublic class TransferInput<A extends AbstractValue<A>,S extends Store<S>> extends Object
TransferInput is used as the input type of the individual transfer functions of a TransferFunction. It also contains a reference to the node for which the transfer function will
 be applied.
 A TransferInput contains one or two stores. If two stores are present, one belongs to
 'then', and the other to 'else'.
| Modifier and Type | Field and Description | 
|---|---|
| protected Analysis<A,S,?> | analysisThe corresponding analysis class to get intermediate flow results. | 
| protected S | elseStoreThe 'else' result store (or  nullif none is present). | 
| protected @Nullable Node | nodeThe corresponding node. | 
| protected S | storeThe regular result store (or  nullif none is present). | 
| protected S | thenStoreThe 'then' result store (or  nullif none is present). | 
| Modifier | Constructor and Description | 
|---|---|
|   | TransferInput(@Nullable Node n,
             Analysis<A,S,?> analysis,
             S s)Create a  TransferInput, given a store and a node-value mapping. | 
|   | TransferInput(@Nullable Node n,
             Analysis<A,S,?> analysis,
             S s1,
             S s2)Create a  TransferInput, given two stores and a node-value mapping. | 
|   | TransferInput(Node n,
             Analysis<A,S,?> analysis,
             TransferResult<A,S> to)Create a  TransferInput, given aTransferResultand a node-value mapping. | 
| protected  | TransferInput(TransferInput<A,S> from)Copy constructor. | 
| Modifier and Type | Method and Description | 
|---|---|
| boolean | containsTwoStores() | 
| TransferInput<A,S> | copy() | 
| boolean | equals(@Nullable Object o) | 
| S | getElseStore() | 
| @Nullable Node | getNode() | 
| S | getRegularStore() | 
| S | getThenStore() | 
| A | getValueOfSubNode(Node n) | 
| int | hashCode() | 
| TransferInput<A,S> | leastUpperBound(TransferInput<A,S> other)Compute the least upper bound of two stores. | 
| String | toString() | 
protected final S extends Store<S> store
null if none is present). The following invariant is
 maintained:
 
 store == null ⇔ thenStore != null && elseStore != null
 protected final S extends Store<S> thenStore
null if none is present). The following invariant is
 maintained:
 
 store == null ⇔ thenStore != null && elseStore != null
 protected final S extends Store<S> elseStore
null if none is present). The following invariant is
 maintained:
 
 store == null ⇔ thenStore != null && elseStore != null
 public TransferInput(Node n, Analysis<A,S,?> analysis, TransferResult<A,S> to)
TransferInput, given a TransferResult and a node-value mapping.
 Aliasing: The stores returned by any methods of to will be stored
 internally and are not allowed to be used elsewhere. Full control of them is transferred to
 this object.
 
The node-value mapping nodeValues is provided by the analysis and is only read
 from within this TransferInput.
public TransferInput(@Nullable Node n, Analysis<A,S,?> analysis, S s)
TransferInput, given a store and a node-value mapping.
 Aliasing: The store s will be stored internally and is not allowed to be
 used elsewhere. Full control over s is transferred to this object.
 
The node-value mapping nodeValues is provided by the analysis and is only read
 from within this TransferInput.
public TransferInput(@Nullable Node n, Analysis<A,S,?> analysis, S s1, S s2)
TransferInput, given two stores and a node-value mapping.
 Aliasing: The two stores s1 and s2 will be stored internally and
 are not allowed to be used elsewhere. Full control of them is transferred to this object.
protected TransferInput(TransferInput<A,S> from)
public @Nullable Node getNode()
Node for this TransferInput.public A getValueOfSubNode(Node n)
Node n, which is required to be a 'sub-node'
     (that is, a direct or indirect child) of the node this transfer input is associated with.
     Furthermore, n cannot be a l-value node. Returns null if no value if
     available.public S getRegularStore()
Node
     corresponding to this transfer function resultpublic S getThenStore()
Node this result belongs to evaluates to
     true.public S getElseStore()
Node this result belongs to evaluates to
     false.public boolean containsTwoStores()
true if and only if this transfer input contains two stores that are
     potentially not equal. Note that the result true does not imply that getRegularStore cannot be called (or vice versa for false). Rather, it indicates
     that getThenStore or getElseStore can be used to give more precise
     results. Otherwise, if the result is false, then all three methods getRegularStore, getThenStore, and getElseStore return equivalent
     stores.public TransferInput<A,S> copy()
public TransferInput<A,S> leastUpperBound(TransferInput<A,S> other)
Important: This method must fulfill the same contract as leastUpperBound
 of Store.