Skim "Typestate: A Programming Language Concept for Enhancing Software Reliability" to get the general idea of what typestate is (and its history), and then read "Effective Typestate Verification in the Presence of Aliasing" and briefly answer the following questions: 1. Give an example of a typestate specification you've encountered that was not mentioned in one of the papers we read for today. 2. Give an example of a property about a program that cannot be expressed as a typestate specification. What about this property makes it unverifiable by a typestate checker? 3. For an arbitrary typestate specification, is there some typestate in which it is safe to assume that any object might be in that state? (That is, is there always a typestate that is analogous to "top" in an abstract interpretation?) Why or why not? 4. Aliasing is a key issue for a typestate analysis. Why? 5. One of the novel parts of Fink et al.'s typestate checking system was its handling of aliasing. How did their approach differ from previous approaches, such as the approach in NIL described in Strom and Yememi? 6. What was the most confusing part of the reading? Is there anything you still don't understand? 7. How much time did you spend on this assignment (both the reading and answering the questions, combined)?