Creating complex Animator Controllers through script

I am creating an Animator Controller for a humanoid Character using the Animator Window of the Unity Editor. I have several different states like idle, walk, run and crouch, each in forward, backward and sideway directions, all of them either with a pistol, a rifle or melee.
I am mostly done with what I have planned for this first stage, but thinking about planned states like prone, climbing etc. I get a very bad feeling about the complexity of the system, even though I am using Sub State Machines for clarity. I do like the Animator window as it gives a nice ability of previewing and debugging transitions for example, but at this complexion level development does not feel so straight-forward as it does with small controllers.

Many adjustments to the animation system during the development have to be repeated in several parts of the system, which emerges in a massive time sink. To keep the frustration level low I have to improve the concept in terms of development effiency and maintainability.

The docs about the AnimatorController API contain a promising example of creating such a controller through script. I am thinking about using the features of C# to organize animation states, but did not yet elaborate on this idea.

Do you have experience with managing complex Animation Controllers exclusively through scripts? Are there libraries suited for my general problem described above?

Here is what I found out so far:

  • There seems to be a terrible bug with BlendTrees created from script, which I reported: https://fogbugz.unity3d.com/default.asp?791261_635ue14vkn4bc8ko
  • You have to be careful with references. For example you can assign the same transition object to multiple states which is not possible through the editor and seems to confuse the engine. Just clone the transition object into a new object to retain the benefit of using a script to create multiple transitions automatically.

I will have to wait for a response on my bug report before I dig deeper into the topic. The BlendTree problem is a real show stopper for this purpose.