/// <summary>
        /// Loads the parameter location.
        /// </summary>
        /// <param name="obj">The object.</param>
        /// <param name="method">The method.</param>
        /// <param name="parameter">The parameter.</param>
        /// <param name="id">The identifier.</param>
        /// <param name="parametersIndex">Index of the parameters.</param>
        /// <returns>The parameter location.</returns>
        private static ParameterLocation LoadParameterLocation(object obj, MethodInfo method, ParameterInfo parameter, string id, string parametersIndex)
        {
            // parametersIndex Format: ;paramtype,className.methodName.paramName.fullId,arrayName.Array.data[index];
            ParametersIndexUtilities parametersIndexUtilities = new ParametersIndexUtilities();
            ParameterLocation        result = null;

            if (parametersIndex != null)
            {
                string   expectedParameterFullName = parametersIndexUtilities.GetParameterFullName(method.DeclaringType.Name, method.Name, parameter.Name, id);
                string[] parameterIndexes          = parametersIndexUtilities.GetParametersIndexList(parametersIndex);
                foreach (string parameterIndex in parameterIndexes)
                {
                    if (!parameterIndex.Equals(string.Empty))
                    {
                        string parameterFullName = parametersIndexUtilities.GetParameterFullName(parameterIndex);
                        if (parameterFullName.Equals(expectedParameterFullName))
                        {
                            string arrayName = parametersIndexUtilities.GetParameterValueStorageName(parameterIndex);

                            int index = parametersIndexUtilities.GetParameterValueStorageLocationIndex(parameterIndex);
                            result = new ParameterLocation();
                            ArrayStorageUtilities arrayStorageUtilities = new ArrayStorageUtilities();
                            FieldInfo             field = arrayStorageUtilities.GetArrayStorageFieldInfoByName(obj, arrayName);
                            result.ParameterArrayLocation.ArrayFieldInfo  = field;
                            result.ParameterArrayLocation.ArrayIndex      = index;
                            result.ParameterArrayLocation.ArrayName       = arrayName;
                            result.ParameterClassLocation.ComponentType   = obj.GetType();
                            result.ParameterClassLocation.ComponentObject = obj;
                        }
                    }
                }
            }

            return(result);
        }
        /// <summary>
        /// Loads the parameter value.
        /// </summary>
        /// <param name="obj">The object.</param>
        /// <param name="method">The method.</param>
        /// <param name="parameter">The parameter.</param>
        /// <param name="id">The identifier.</param>
        /// <param name="parametersIndexes">The parameters indexes.</param>
        /// <returns>The parameter value.</returns>
        private static object LoadParameterValue(object obj, MethodInfo method, ParameterInfo parameter, string id, string parametersIndexes)
        {
            // parametersIndex Format: ;paramtype,className.methodName.paramName.fullId,arrayName.Array.data[index];
            object result = null;
            ParametersIndexUtilities parametersIndexUtilities = new ParametersIndexUtilities();

            if (parametersIndexes != null)
            {
                string   expectedParameterFullName = parametersIndexUtilities.GetParameterFullName(method.DeclaringType.Name, method.Name, parameter.Name, id);
                string[] parametersIndexesList     = parametersIndexUtilities.GetParametersIndexList(parametersIndexes);
                foreach (string parameterIndex in parametersIndexesList)
                {
                    if (!parameterIndex.Equals(string.Empty))
                    {
                        string parameterFullName = parametersIndexUtilities.GetParameterFullName(parameterIndex);
                        if (parameterFullName.Equals(expectedParameterFullName))
                        {
                            string arrayName = parametersIndexUtilities.GetParameterValueStorageName(parameterIndex);

                            int index = parametersIndexUtilities.GetParameterValueStorageLocationIndex(parameterIndex);
                            result = GetValue(obj, arrayName, index);
                        }
                    }
                }
            }

            return(result);
        }
        public void GetParameterValueStorageLocationIndex_Should_ReturnZero_Given_AParameterIndexWithTheIndexOfTHeParametersValuesStorageArraySetToZero()
        {
            string parameterIndex = ";System.String,ComponentName.MethodName.parameterName.parameterId,parameterPVS.Array.data[0]";
            int    expectedParameterValueStorageLocationIndex = 0;
            ParametersIndexUtilities parametersIndexUtilities = new ParametersIndexUtilities();
            int result = parametersIndexUtilities.GetParameterValueStorageLocationIndex(parameterIndex);

            Assert.AreEqual(expectedParameterValueStorageLocationIndex, result, "The method GetParameterValueStorageLocationIndex doesn't return the right parameterType");
        }