#1: removed unnecessary code from abstraction
#2: added more implicit flow test cases
#3: Performance improvement: now only propagating field taints to callees if they actually read the field being propagated