private void CollectExtraReferences(DocumentNode node, ReplaceStyleTemplateCommand.ExtraReferences references)
        {
            if (node.Parent != null && node.IsProperty)
            {
                ReplaceStyleTemplateCommand.EnsureMember((IMember)node.SitePropertyKey, references);
            }
            ReplaceStyleTemplateCommand.EnsureType(node.Type, references);
            IMember valueAsMember = DocumentPrimitiveNode.GetValueAsMember(node);

            if (valueAsMember != null)
            {
                ReplaceStyleTemplateCommand.EnsureMember(valueAsMember, references);
            }
            foreach (DocumentNode node1 in node.ChildNodes)
            {
                this.CollectExtraReferences(node1, references);
            }
        }
        private static void EnsureMember(IMember member, ReplaceStyleTemplateCommand.ExtraReferences references)
        {
            IProperty property = member as IProperty;

            if (property != null)
            {
                ReplaceStyleTemplateCommand.EnsureType(property.PropertyType, references);
            }
            IType type = member as IType;

            if (type != null)
            {
                ReplaceStyleTemplateCommand.EnsureType(type, references);
            }
            else
            {
                ReplaceStyleTemplateCommand.EnsureType(member.DeclaringType, references);
            }
        }