public string DumpApi(SignatureWriter WriteSignature, DumpPostProcesser postProcess = null)
        {
            if (Database == null)
            {
                throw new Exception("Cannot Dump API without a ReflectionDatabase provided.");
            }

            buffer.Clear();

            foreach (ClassDescriptor classDesc in Database.Classes.Values)
            {
                WriteSignature(this, classDesc, 0);
                NextLine();

                foreach (MemberDescriptor memberDesc in sorted(classDesc.Members))
                {
                    WriteSignature(this, memberDesc, 1);
                    NextLine();
                }
            }

            foreach (EnumDescriptor enumDesc in Database.Enums.Values)
            {
                WriteSignature(this, enumDesc, 0);
                NextLine();

                foreach (EnumItemDescriptor itemDesc in sorted(enumDesc.Items))
                {
                    WriteSignature(this, itemDesc, 1);
                    NextLine();
                }
            }

            return(ExportResults(postProcess));
        }
        public string ExportResults(DumpPostProcesser postProcess = null)
        {
            string result = buffer.ToString();
            string post   = postProcess?.Invoke(result);

            if (post != null)
            {
                result = post;
            }

            return(result);
        }