diff --git a/puzzlers/pzzlr-case-defaults.html b/puzzlers/pzzlr-case-defaults.html
new file mode 100644
index 0000000..315c0d1
--- /dev/null
+++ b/puzzlers/pzzlr-case-defaults.html
@@ -0,0 +1,86 @@
+
+
Explanation
+
+ As per the SLS (§5.3.2), if the elements (i.e. constructor parameters) of
+ a case class have default arguments, these are carried over to the
+ apply factory method on the companion object that is generated by
+ the compiler. Also, when Toy is declared, there is indeed a
+ this reference in scope, so the code compiles successfully.
+
+
+ The this in this.toString (the value of the default argument
+ for squeezeMsg) does not refer to the instance of Toy being
+ created, however. Instead, it resolves to the instance of the class or object
+ in which Toy's constructor is defined.
+
+
+ When running the example in the REPL, the class or object invoking the
+ constructor new Toy() directly is a generated "script object":
+
+scala> println(new Toy())
+$line46.$read$$iw$$iw$@7335aa7c
+
+ When creating a new
Toy instance using the standard factory method
+ generated for case classes, however, the class or object invoking
Toy's
+ constructor is actually the companion object
Toy:
+
+scala> println(Toy())
+Toy
+
+
+
+ Since the generated implementation of equals for case classes
+ uses the values of the case class's elements (squeezeMsg, in this case)
+ to determine equality, the two instances Toy() and new Toy()
+ are, thus, not equal.
+
+
\ No newline at end of file