1. Caused by confusing reference semantics and value semantics, which is pretty much inevitable when a fundamental data type is mutable.
2. Boolean is a subclass of Integer, because... why?
3. Same problem as #1.
4. Once again, beginners have no understanding of reference vs. value semantics, and why should they?
5. Default arguments of a function are evaluated just once, because... why? This one just seems crazy to me. It turns default arguments into stateful globals, so an innocent-looking function suddenly exhibits unpredictable behavior.