I'm thinking it might be more useful if it did not mutate the color itself. The reason is that abstracts cannot be modified unless they are in the local scope, i.e. a param or declared locally. I wasn't aware of this, previously.

```
//This is fine for a locally scoped variable
var c = FlxColor.getRGB(100, 150, 200);
c.lighten();

//For member variable x, this gives a compile error
x.lighten();
```

I'm wondering if it would be more useful to offer the behavior given in the comment, because this would allow you do do the following:
```
// For local var c, the old behavior could be achieved like so
c = c.lighten();

// For member variable x, this would become possible
someColorFunction(x.lighten());
```

Currently lighten and darken are broken anyway, due to https://github.com/HaxeFoundation/haxe/issues/3042. It has a workaround, but it would only be useful to use the workaround if the original behavior is desired.

What do you think? Should I go with the non mutating version?