public override void OutputPre(OutputStream os, OutputFlags flags)
        {
            if (FunctionClass.HasFlag(FuncClass.Public))
            {
                os.Append("public: ");
            }
            if (FunctionClass.HasFlag(FuncClass.Protected))
            {
                os.Append("protected: ");
            }
            if (FunctionClass.HasFlag(FuncClass.Private))
            {
                os.Append("private: ");
            }

            if (!(FunctionClass.HasFlag(FuncClass.Global)))
            {
                if (FunctionClass.HasFlag(FuncClass.Static))
                {
                    os.Append("static ");
                }
            }
            if (FunctionClass.HasFlag(FuncClass.Virtual))
            {
                os.Append("virtual ");
            }

            if (FunctionClass.HasFlag(FuncClass.ExternC))
            {
                os.Append("extern \"C\" ");
            }

            if (ReturnType != null)
            {
                ReturnType.Output(os, flags);
                os.Append(' ');
            }

            if (!(flags.HasFlag(OutputFlags.NoCallingConvention)))
            {
                OutputCallingConvention(os, CallConvention);
            }
        }