/// <summary>
        ///		Obtiene el prototipo de una propiedad
        /// </summary>
        private MLNodesCollection GetPropertyPrototype(PropertyModel objProperty)
        {
            MLNodesCollection objColMLNodes = GetMethodPrototypeDefinition(objProperty, false, objProperty.GetMethod.ReturnType);

            // Argumentos
            if (objProperty.Arguments.Count > 0)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("["));
                objColMLNodes.AddRange(GetArgumentsPrototype(objProperty));
                objColMLNodes.Add(Document.MLBuilder.GetSpan("]"));
            }
            // Get y set
            objColMLNodes.Add(Document.MLBuilder.GetSpan("{"));
            objColMLNodes.AddRange(GetPropertyMethodPrototype(objProperty.Modifier, objProperty.GetMethod, "get"));
            objColMLNodes.AddRange(GetPropertyMethodPrototype(objProperty.Modifier, objProperty.SetMethod, "set"));
            objColMLNodes.Add(Document.MLBuilder.GetSpan("}"));
            // Devuelve el prototipo
            return(objColMLNodes);
        }
        /// <summary>
        ///		Obtiene el prototipo de una función
        /// </summary>
        private MLNodesCollection GetMethodPrototype(BaseMethodModel objMethod, bool blnIsAsync = false, TypedModel objReturnType = null)
        {
            MLNodesCollection objColMLNodes = GetMethodPrototypeDefinition(objMethod, blnIsAsync, objReturnType);

            // Añade los argumentos
            objColMLNodes.Add(Document.MLBuilder.GetSpan("("));
            objColMLNodes.AddRange(GetArgumentsPrototype(objMethod));
            objColMLNodes.Add(Document.MLBuilder.GetSpan(")"));
            // Devuelve el prototipo
            return(objColMLNodes);
        }
        /// <summary>
        ///		Obtiene los argumentos para un prototipo
        /// </summary>
        private MLNodesCollection GetArgumentsPrototype(BaseMethodModel objMethod)
        {
            MLNodesCollection objColMLNodes = new MLNodesCollection();

            // Añade la cadena con los argumentos
            for (int intIndex = 0; intIndex < objMethod.Arguments.Count; intIndex++)
            {                                     // Añade los nodos de los argumentos
                objColMLNodes.AddRange(GetArgumentData(objMethod.Arguments[intIndex]));
                // Añade un nodo de separación
                if (intIndex < objMethod.Arguments.Count - 1)
                {
                    objColMLNodes.Add(Document.MLBuilder.GetSpan(","));
                }
            }
            // Devuelve los argumentos
            return(objColMLNodes);
        }
        /// <summary>
        ///		Obtiene la definición (el prefijo) de un prototipo de un método
        /// </summary>
        private MLNodesCollection GetMethodPrototypeDefinition(BaseMethodModel objMethod, bool blnIsAsync, TypedModel objReturnType)
        {
            MLNodesCollection objColMLNodes = new MLNodesCollection();

            // Añade los modificadores
            objColMLNodes.Add(Document.MLBuilder.GetSpan(GetModifierText(objMethod.Modifier)));
            if (blnIsAsync)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("async"));
            }
            if (objMethod.IsAbstract)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("abstract"));
            }
            if (objMethod.IsOverride)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("override"));
            }
            if (objMethod.IsSealed)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("sealed"));
            }
            if (objMethod.IsStatic)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("static"));
            }
            if (objMethod.IsVirtual)
            {
                objColMLNodes.Add(Document.MLBuilder.GetSpan("virtual"));
            }
            // Añade el valor de retorno
            if (objReturnType != null)
            {
                objColMLNodes.Add(GetLinkTypeName(objReturnType));
            }
            // Añade el nombre del método
            objColMLNodes.Add(Document.MLBuilder.GetSpan(objMethod.Name));
            // Añade los genéricos
            objColMLNodes.AddRange(GetMethodPrototypeGenerics(objMethod.TypeParameters));
            // Devuelve la definición de prototipo
            return(objColMLNodes);
        }