protected override void Work()
        {
            IProjectDocument projectDocument1 = this.projectDocuments[this.currentProjectDocument];

            if (projectDocument1 == null || projectDocument1.Document != null)
            {
                return;
            }
            IProjectDocument projectDocument2 = this.model.ResourceEntryNode.ProjectContext.OpenDocument(projectDocument1.Path);

            if (projectDocument2 == null)
            {
                return;
            }
            SceneDocument document = projectDocument2.Document as SceneDocument;

            if (document == null || !document.IsEditable)
            {
                return;
            }
            IDocumentRoot documentRoot = document.DocumentRoot;
            DocumentNode  searchKey    = (DocumentNode)null;
            SceneNode     keyNode      = this.model.ResourceEntryNode.KeyNode;

            if (keyNode != null)
            {
                searchKey = keyNode.DocumentNode;
            }
            foreach (DocumentNode documentNode1 in documentRoot.RootNode.SelectDescendantNodes((Predicate <DocumentNode>)(node =>
            {
                DocumentCompositeNode node1 = node as DocumentCompositeNode;
                return(node1 != null && node1.Type.IsResource && ResourceNodeHelper.GetResourceKey(node1).Equals(searchKey));
            })))
            {
                ITypeMetadataFactory metadataFactory = this.model.ResourceEntryNode.ProjectContext.MetadataFactory;
                IType type = documentNode1.TypeResolver.ResolveType(PlatformTypes.FrameworkElement);
                DocumentCompositeNode documentCompositeNode = documentNode1.SelectFirstAncestorNode(type.RuntimeType) as DocumentCompositeNode;
                string caption = document.Caption;
                string str;
                if (documentCompositeNode != null)
                {
                    IPropertyId  index         = (IPropertyId)metadataFactory.GetMetadata(documentCompositeNode.TargetType).NameProperty;
                    DocumentNode documentNode2 = documentCompositeNode.Properties[index];
                    if (documentNode2 != null)
                    {
                        DocumentPrimitiveNode documentPrimitiveNode = documentNode2 as DocumentPrimitiveNode;
                        str = documentPrimitiveNode == null?documentNode2.ToString() : documentPrimitiveNode.Value.ToString();
                    }
                    else
                    {
                        str = documentCompositeNode.ToString();
                    }
                }
                else
                {
                    str = documentNode1.ToString();
                }
                this.model.ReferenceNames.Add(string.Format((IFormatProvider)CultureInfo.CurrentCulture, StringTable.ReferencesFoundFormat, new object[2]
                {
                    (object)str,
                    (object)caption
                }));
                this.model.AddReferencesFile(document);
            }
            this.model.ResourceEntryNode.ViewModel.DesignerContext.DocumentService.CloseDocument((IDocument)document);
        }