User defined function, recursion and passing self along

I noticed the non-bang was consistent yep, but mutating methods or not, returning a value should be fairly consistent, after all ‘why’ did it return nil in the case it did not make changes, yet it returned self when it did, why not always return self so you can chain?

That really really badly should have had a new name indeed, that seems so counter-intuitive and internally inconsistent compared to the surrounding methods (Principle of Least Surprise is violated! :astonished_face:). If anything it should have returned true or false, not self or nil. o.O