Source: https://users.informatik.uni-halle.de/~brass/oop10/c7_state.pdf