“…For example, updates cannot change type definitions or function prototypes [27,11,18,20,2], or else only permit such changes for abstract types or encapsulated objects [20,14]. In many cases, updates to active code (e.g., long-running loops) are disallowed [14,24,13,16,20], and data stored in local variables may not be transformed [17,16,13,18]. Some approaches are intentionally less full-featured, targeting "fix and continue" development [19,15] or dynamic instrumentation [9].…”