public virtual void VisitMethod(Method method)
        {
            if (WriteReturnTypes && method.ReturnType != null)
            {
                VisitTypeSpec(method.ReturnType);
                writer.Write(' ');
            }

            if (WriteTypeBeforeMemberName)
            {
                VisitDeclaringTypeSpec(method.DeclaringType);
                writer.Write('.');
            }

            writer.WriteMemberName(method.Name);

            if (method.TypeArguments != null && method.TypeArguments.Count > 0)
            {
                writer.Write('<');
                for (var i = 0; i < method.TypeArguments.Count; i++)
                {
                    if (i > 0)
                    {
                        writer.Write(',');
                        writer.Write(' ');
                    }

                    VisitTypeSpec(method.TypeArguments [i]);
                }
                writer.Write('>');
            }

            writer.Write(' ');
            writer.Write('(');

            for (var i = 0; method.Parameters != null && i < method.Parameters.Count; i++)
            {
                if (i > 0)
                {
                    writer.Write(',');
                    writer.Write(' ');
                }

                method.Parameters [i].AcceptVisitor(this);
            }

            writer.Write(')');
        }