Why does mirroring only work for humanoid rig?
As Humanoid rig uses a predetermined set of bones, it is much easier to implement mirroring for them. I'm currently researching an efficient way to do mirroring for Generic rig and it might happen in a future update. For now, duplicating the animation clip and using the mirroring import setting is a good workaround.
How can I make sure that my character plays a specific animation on a specific state?
While Mecanim forces you to use a state machine and drive the animation through parameters, it is not the only viable approach.
That being said, if you are a beginner I would recommend to try implement a simple State Machine yourself.
There are many tutorials and free examples available only.
State Machines are actually fairly simple and ubiquitous in game programming.
With a state machine running on your character, you can then just play the desired animation when entering a specific state.
How can I suggest a new feature?
Don't hesitate to create an issue on Github with a description of what you need or trying to achieve.
While I can't guarantee adding every suggestion as a feature, I will at least try to suggest a workaround.
How about the general performance and GC allocations?
As far as I am able to tell, FlexMotion doesn't allocate temporary data to the managed heap (GC Alloc) after initialization.
While I'm pretty happy with the performance today and a lot of time has been spent on optimization,
there is surely still room for improvement.
The tool is currently on par with Mecanim when no blending is involved and slightly slower with blending.
My goal is to eventually have FlexMotion performs better than Mecanim on every front.