The line:
iterator = ((IRegion) n.getNode()).getUnitGraph().iterator()
in unitIteratorOfPDGNode(PDGNode n)
I think it would return the iterator of the unit graph instead of the Region.
What you are looking for might be iterator = ((IRegion) n.getNode()).getUnits().iterator()?
It would not affect your analysis as the PDG-based backslicing would always give you an empty set, since getBackDependet of the PDG might have an issue and always return 0.
The line: iterator = ((IRegion) n.getNode()).getUnitGraph().iterator() in unitIteratorOfPDGNode(PDGNode n)
I think it would return the iterator of the unit graph instead of the Region.
What you are looking for might be iterator = ((IRegion) n.getNode()).getUnits().iterator()?
It would not affect your analysis as the PDG-based backslicing would always give you an empty set, since getBackDependet of the PDG might have an issue and always return 0.