Hi,
no, no. Try to avoid duplicate code and duplicate states or behaviors as much as possible. This is a bad sign. Reusable component and careful crafting of your system is necessary then.
You need to think one level up. Instead of changing states, you deal with several Fsm working at the same time.
Have one fsm dealing with your character control. On that same gameObject ( makes no difference really), you can add another fsm that control the color animation. And you then send events to this color animator fsm to behave.
Say your character changes color when jumping ( silly, but you get the point). in your character controller fsm, broadcast a "jump" event when it actually jump. Your color animator fsm has a global event "jump" that triggers color animation for a given period of time. That's how you achieve simultaneous behaviors without duplicating states. Build an event system around your game that defines entry point or signals for interested parties to act.
Now, how do you trigger that event without loosing the character control. It depends how you have build your controller really. If it's a single Do-it-all state, then you need yet another fsm that will simply respond to the jump input and broadcast a "jump" event. If you move form state to state to control your character then you can add actions or inserts States in your flow to broadcast the "jump" event when appropriate ( character might jump because the ground chaked, not just because the user wanted to)
If I missed the point, could you elaborate on the behavior you want to achieve: when you want the color to animate, how you want it to stop etc etc.
Bye,
Jean