Executing code in the past: efficient in-memory object graph versioning | ACM SIGPLAN Notices | DeepDyve