> So outside of a local scope, this just silently fails? Are you sure that's not a bug?

It does not fail silently. It produce the compile error: "Cannot modify the abstract value, store it into a local first"

> Where do we have a FlxColor with (default, null)?

We don't have a read-only `FlxColor`, to my knowledge, but I was merely clumsily speculating as to why it might be the case that a non-local Int cannot be mutated. It's highly likely that I'm completely wrong, but the case of a read-only abstract is certainly one example of when its behavior might be unexpected. Haxe must already be doing clever things to allow you to treat an abstract int as a reference when locally scoped, so I really don't know why there couldn't be something similar for non-locally scoped variables.

> So, what does that mean for other functions that modify the int itself, like set_red()?

Firstly, it means that these functions are still useful and may still be used on any locally scoped FlxColor, such as in any algorithm that declares the FlxColor, or any FlxColor that has been passed as an argument. However, being an Int, it means the FlxColor is passed by value.

For non-local FlxColors, such mutators can be used like so:

```
var c = memberFlxColor;
c.alphaFloat = 0.6;
c.lightness = 0.5;
memberFlxColor = c;
```

This is clearly not ideal, and I'm really not sure why it should be necessary.