import python predicate monkey_patched_builtin(string name) { exists(AttrNode attr, SubscriptNode subscr, StrConst s | subscr.isStore() and subscr.getIndex().getNode() = s and s.getText() = name and subscr.getObject() = attr and attr.getObject("__dict__").pointsTo(Module::builtinModule()) ) or exists(CallNode call, ControlFlowNode bltn, StrConst s | call.getArg(0) = bltn and bltn.pointsTo(Module::builtinModule()) and call.getArg(1).getNode() = s and s.getText() = name and call.getFunction().pointsTo(Value::named("setattr")) ) or exists(AttrNode attr | attr.isStore() and attr.getObject(name).pointsTo(Module::builtinModule()) ) }