private void WriteMethodArguments(StringBuilder formatBuilder, int[] argumentsIndex, int startParameter, bool includeParameterName,
                                          bool includeParameterType, bool includeParameterValue, bool includeOutParams)
        {
            IMethodSignature methodSignature = this.context.MethodMapping.MethodSignature;
            int parameterCount = methodSignature.ParameterCount;

            for (int i = 0; i < parameterCount; i++)
            {
                int index = i + startParameter;

                if (index > 0)
                {
                    formatBuilder.Append(", ");
                }

                bool isOut = this.targetMethod.Parameters[i].Attributes.HasFlag(ParameterAttributes.Out);
                bool isRef = this.targetMethod.Parameters[i].ParameterType is PointerTypeSignature;

                ITypeSignature parameterType = methodSignature.GetParameterType(i);

                if (includeParameterType)
                {
                    string typeName = parameterType.GetReflectionName(ReflectionNameOptions.MethodParameterContext, NameShortener.Instance);
                    if (isRef)
                    {
                        typeName = string.Format("{0} {1}", (isOut ? "out" : "ref"), typeName.Remove(typeName.Length - 6));  //Remove 'ByRef' suffix
                    }
                    formatBuilder.Append(typeName);
                }

                if (includeParameterName)
                {
                    formatBuilder.AppendFormat(" {0}", this.context.MethodMapping.MethodMappingInformation.GetParameterName(i));
                }



                if ((includeOutParams || !isOut) && includeParameterValue)
                {
                    if (includeParameterName || includeParameterType)
                    {
                        formatBuilder.AppendFormat(" = ");
                    }

                    AppendFormatPlaceholder(index, formatBuilder, parameterType);
                    argumentsIndex[index] = i;
                }
            }
        }