public override void Visit(DOM.Alias alias)
 {
     _namespaceResolver.ProcessAlias((Alias)alias);
     ProcessInterpolation((IPairWithInterpolation)alias);
     base.Visit(alias);
     Visit(alias.PairValue);
 }
        public override void OnAlias(DOM.Alias alias)
        {
            CheckBlockIntegrityForValueAlias(alias);
            CheckPairValue(alias);
            CheckAliasIsDefined(alias);
            var aliasDef = ((Alias)alias).AliasDefinition;

            //Do not resolve alias without AliasDef or having circular reference
            if (aliasDef == null || aliasDef.HasCircularReference)
            {
                return;
            }

            AliasContext.Push(new AliasContext {
                AliasDefinition = aliasDef, Alias = (Alias)alias, AliasNsInfo = GetContextNsInfo()
            });
            CheckForUnexpectedArguments((Alias)alias, aliasDef, _currentModule.FileName);
            CheckInterpolation((Alias)alias);
            if (CheckStartOfChoiceContainer((Alias)alias, aliasDef.Entities, aliasDef))
            {
                Visit(aliasDef.Entities.Where(e => !(e is DOM.Attribute)));
                EndChoiceContainer();
            }
            else
            {
                Visit(aliasDef.Entities.Where(e => !(e is DOM.Attribute)));
            }

            AliasContext.Pop();
            _namespaceResolver.ProcessAlias((Alias)alias);
        }