/// <summary>
        /// Callback from InternalAPIAccess to process a single Animator state.
        /// </summary>
        /// <param name="layer">Layer index.</param>
        /// <param name="layerName">Layer name.</param>
        /// <param name="item">State name.</param>
        public void ProcessAnimatorState(StateInfo info)
        {
            string layerPrefix = (info.Layer > 0 || config.ForceLayerPrefix ? null : info.LayerName);
            string name        = CodeGenerationUtils.GenerateStateName(config.AnimatorStatePrefix, info.Name, layerPrefix);

            name = name.FirstCharToUpper();
            string fieldName = CodeGenerationUtils.GenerateStateName(config.AnimatorStateHashPrefix, info.Name, layerPrefix);

            fieldName = fieldName.FirstCharToLower();
            // field declaration
            GenericFieldCodeElement field = new GenericFieldCodeElement(typeof(int), fieldName, "" + info.Id);

            field.ReadOnly = true;
            field.Summary.Add("Hash of Animator state " + info.Name);
            classCodeElement.Fields.Add(field);
            string methodName = "Is" + name;
            // IsXXX method ()
            MethodCodeElement <bool> method = new MethodCodeElement <bool> (methodName);

            method.Origin = "state " + info.Name;
            method.Code.Add("return " + fieldName + " == animator.GetCurrentAnimatorStateInfo (" + info.Layer + ").nameHash" + ";");
            method.Summary.Add("true if the current Animator state of layer " + info.Layer + " is  \"" + info.Name + "\".");
            classCodeElement.Methods.Add(method);
            // overloaded IsXXX (int nameHash)
            MethodCodeElement <bool> methodWithLayerParameter = new MethodCodeElement <bool> (methodName);

            methodWithLayerParameter.Origin = "state " + info.Name;
            methodWithLayerParameter.AddParameter(typeof(int), "nameHash");
            methodWithLayerParameter.Code.Add("return nameHash == " + fieldName + ";");
            methodWithLayerParameter.Summary.Add("true if the given (state) nameHash equals Animator.StringToHash (\"" + info.Name + "\").");
            classCodeElement.Methods.Add(methodWithLayerParameter);
            // state dictionary is filled in overriden method InitialiseEventManager
            object [] parameters = new object[] { info.Id,
                                                  info.Layer,
                                                  info.LayerName,
                                                  info.Name,
                                                  info.Tag,
                                                  info.Speed,
                                                  info.FootIK,
                                                  info.Mirror,
                                                  info.Motion.Name,
                                                  info.Motion.Duration };
            string parameterList = CodeElementUtils.GetCallParameterString(parameters);

            EventManagerInitialiser.Code.Add(StateInfoDict + ".Add (" + info.Id + ", new StateInfo (" + parameterList + "));");
        }
        void ProcessTransition(TransitionInfo info)
        {
            TransitionInfos.Add(info.Id, info);
            object [] parameters = new object[] { info.Id,
                                                  info.Name,
                                                  info.Layer,
                                                  info.LayerName,
                                                  info.SourceId,
                                                  info.DestId,
                                                  info.Atomic,
                                                  info.Duration,
                                                  info.Mute,
                                                  info.Offset,
                                                  info.Solo, };
            string parameterList = CodeElementUtils.GetCallParameterString(parameters);

            EventManagerInitialiser.Code.Add(TransitionInfoDict + ".Add (" + info.Id + ", new TransitionInfo (" + parameterList + "));");
        }