--- /dev/null
+// +build ignore
+
+package C1
+
+import "strings"
+
+func example() {
+ x := "foo"
+ println(x)
+
+ // Match, but the transformation is not sound w.r.t. possible side effects.
+ println(strings.Repeat("*", 3))
+
+ // No match, since second use of wildcard doesn't match first.
+ println(strings.Repeat("*", 3)[:len(strings.Repeat("*", 2))])
+
+ // Recursive match demonstrating bottom-up rewrite:
+ // only after the inner replacement occurs does the outer syntax match.
+ println(x)
+ // -> (x[:len(x)])
+ // -> x
+}