/// <summary>
        /// Returns true if the type specified is a custom parsable type - and should have a static (shared) Parse method on the definition on it.
        /// The convert parameter will be set to a delegate that calls this method.
        /// </summary>
        /// <param name="type">The type to check for parsability</param>
        /// <param name="convert">If it is a custom parsable type then it will be set to the converter of this type</param>
        /// <returns>True if the type is decoated with a custom parsable type</returns>
        public static bool IsCustomParsableObjectType(Type type, out PDFValueConverter convert)
        {
            PDFParsableValueAttribute valattr = GetCustomAttribute <PDFParsableValueAttribute>(type, true);

            if (null != valattr)
            {
                convert = ConvertObjects.GetParsableValueConverter(type);
                return(null != convert);
            }
            else
            {
                convert = null;
                return(false);
            }
        }
        /// <summary>
        /// Retrurns true and an XML converter to convert a reader value to the required type.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="convert"></param>
        /// <param name="iscustom"></param>
        /// <returns></returns>
        private static bool IsCustomParsableType(Type type, out PDFXmlConverter convert, out bool iscustom)
        {
            PDFParsableValueAttribute valattr = GetCustomAttribute <PDFParsableValueAttribute>(type, true);

            if (null != valattr)
            {
                iscustom = true;
                convert  = ConverterXml.GetParsableXmlConverter(type);
                return(null != convert);
            }
            else
            {
                iscustom = false;
                convert  = null;
                return(false);
            }
        }