public class AccessibilityGraph
extends java.lang.Object
An accessibility graph provides the low level data structure used to construct factor graph automatically.
An accessibility graph is
a directed graph that keeps track of (a superset of) accessibility relationships between java objects. This is used to answer
questions such as: does factor f1 and f2 both have access to an object with a mutable fields which
is unobserved?
Note:
- accessibility via global (static) fields is assumed not to be used throughout this inference.
- visibility (public/private/protected) is ignored when establishing accessibility. To understand why,
say object o1 has access to o2, which has a private field to o3. Even though o1 may not have direct access to o3,
o2 may have a public method giving effective access to it. Hence, we do want to have a path from o1 to o3 (via
edges (o1, o2), (o2, o3) indicating that there may be accessibility from o1 to o3.