The code snippet below will explain it far better than words could. Spawning the given object will instantly crash Dream Daemon.
Numbered Steps to Reproduce Problem:
1. Code a self-referential mutable_appearance
2. Spawn it
Code Snippet (if applicable) to Reproduce Problem:
/obj/recursive/New()
..()
var/mutable_appearance/app = new(src)
app.pixel_x = 32
app.overlays += app
appearance = app
Expected Results:
Either for the object's sprite to repeat to the right infinitely, or for the object's sprite to repeat to the right once. (I was hoping for the former, but honestly expected the latter.)
Actual Results:
Server crashed.
The rest of the template isn't really important here.
The coolest solution would be to make overlays contain a pointer to the appearance rather than a copy of it, and thus allow repeating sprites like this, but I'd understand if you just disallowed this.