Revisiting program slicing with ownership-based information flow