Source: https://courses.cs.washington.edu/courses/cse444/12sp/exams/practice-architecture-sol.pdf