/// <summary>
        /// Verifies the extension rule.
        /// </summary>
        /// <param name="context">The Interop service context</param>
        /// <param name="info">out parameter to return violation information when rule does not pass</param>
        /// <returns>true if rule passes; false otherwise</returns>
        public override bool?Verify(ServiceContext context, out ExtensionRuleViolationInfo info)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            bool?passed = null;

            info = null;

            JObject entry;

            context.ResponsePayload.TryToJObject(out entry);

            List <string> jNavgPropNames = JsonSchemaHelper.GetAllSpecifiedPropertyNameFromEntry(entry, Constants.OdataAssociationLinkPropertyNameSuffix) as List <string>;

            if (jNavgPropNames.Count != 0)
            {
                if (context.OdataMetadataType == ODataMetadataType.FullOnly)
                {
                    // Send a request with "application/json;odata=minimalmetadata" in Accept header.
                    string acceptHeader = Constants.V3AcceptHeaderJsonMinimalMetadata;
                    string minimalUrl   = context.Destination.AbsoluteUri;

                    if (context.Destination.AbsoluteUri.Contains(";odata=fullmetadata"))
                    {
                        minimalUrl = context.Destination.AbsoluteUri.Replace(";odata=fullmetadata", "");
                    }

                    Response response = WebHelper.Get(new Uri(minimalUrl), acceptHeader, RuleEngineSetting.Instance().DefaultMaximumPayloadSize, context.RequestHeaders);

                    JObject newEntry;
                    response.ResponsePayload.TryToJObject(out newEntry);
                    List <string> jNewNavgPropNames = JsonSchemaHelper.GetAllSpecifiedPropertyNameFromEntry(newEntry, Constants.OdataAssociationLinkPropertyNameSuffix) as List <string>;

                    if (jNewNavgPropNames.Count == 0)
                    {
                        passed = true;
                    }
                    else
                    {
                        passed = false;
                        info   = new ExtensionRuleViolationInfo(this.ErrorMessage, context.Destination, context.ResponsePayload);
                    }
                }
                else
                {
                    passed = false;
                    info   = new ExtensionRuleViolationInfo(this.ErrorMessage, context.Destination, context.ResponsePayload);
                }
            }
            else
            {
                passed = null;
            }

            return(passed);
        }