abstraction for configured policy object that is responsible for detecting shared objects and classes
The interface has to support both
- tracking (actual access) based policies
("what is shared")
- conservative reachability based policies
("what could be shared")
The interface is intentionally kept generic to support both policies since tracking - while being
far more efficient in terms of states and speed - can either miss some paths or cause state spaces
to depend on search history, thus leading to different search graphs for randomized searches.
Missed paths only happen in cases where there is very little interaction between threads and
defects only happen along single paths. The second case is mostly of interest for comparative
studies and not very relevant for bug finding