DO NOT MERGE: Issue 2106: Live Preview Snapshot

This is a PR for issue #2106.
You can use `instancetype` as the return type. Subclass'ess will be thankful!