/// <summary>
        /// Extracts the method contracts. Does not visit property accessors.
        /// </summary>
        public override void Visit(IMethodDefinition methodDefinition)
        {
            Contract.Assert(methodDefinition != null);

            if (CCDocContractHelper.IsCompilerGenerated(this.host, methodDefinition))
            {
                return; //Don't continue traverser
            }
            if (MethodHelper.IsGetter(methodDefinition) || MethodHelper.IsSetter(methodDefinition))
            {
                return;
            }

            string methodId = MemberHelper.GetMemberSignature(methodDefinition, NameFormattingOptions.DocumentationId);

            docTracker.WriteLine(methodId);

            bool isPure = IsPure(methodDefinition);//TODO: Remove, this should be handled on the packager side.

            ContractPackager packager = new ContractPackager(host, docTracker);

            packager.PackageMethodContracts(methodDefinition, isPure);
            XContract[] contractArray;
            if (packager.TryGetContracts(out contractArray))
            {
                docTracker.AddMemberInfo(contractArray.Length, MemberKind.Method);
                contracts.Add(new KeyValuePair <string, XContract[]>(methodId, contractArray));
            }
            else
            {
                docTracker.AddMemberInfo(0, MemberKind.Method);
            }

            //base.TraverseChildren(methodDefinition);
        }
 public override void TraverseChildren(ITypeDefinition typeDefinition)
 {
     if (CCDocContractHelper.IsCompilerGenerated(this.host, typeDefinition) || IsContractClass(typeDefinition))
     {
         return; //Don't continue traverser
     }
     base.TraverseChildren(typeDefinition);
 }