private void ProcessPage(HtmlNode node, int level, ProcessPass pass, CardDetails cardDetails, AttributeCardType attributeType)
        {
            if (VisitedNodes.Contains(node))
                return;
            VisitedNodes.Add(node);
            switch (pass)
            {
                case ProcessPass.Details:
                    if (NodeHasCardAttributeOfValue(node,attributeType))
                    {
                        var resultNodes = new List<HtmlNode>();
                        HtmlNodeHelpers.FindChildNodesInOrderBelowLevel(node.ChildNodes.First(), 0, new List<HtmlNode>(),
                                                                        resultNodes);
                        CardDetailEntry entry = ExtractCardFieldFromNodeListHelper.Extract(resultNodes);
                        cardDetails.AddEntry(entry);
                    }
                    break;
                case ProcessPass.Image:
                    if (NodeHasAssetAttributeOfInterest(node,attributeType))
                    {
                        //((CardDetailEntryString)cardDetails.GetEntry(CardFieldName.CardName)).Value
                        CardDetailEntry entry = ExtractImagePathFromHtmlHelper.ExtractImagePath(node.OuterHtml);
                        cardDetails.AddEntry(entry);
                    }
                    break;
            }

            foreach (HtmlNode child in node.ChildNodes)
            {
                ProcessPage(child, level + 1, pass, cardDetails,attributeType);
            }

            if (node.NextSibling != null)
            {
                ProcessPage(node.NextSibling, level, pass, cardDetails,attributeType);
            }
        }