public object Build()

in resharper/resharper-unity/src/Unity/Yaml/Psi/DeferredCaches/AssetInspectorValues/AssetInspectorValuesContainer.cs [74:131]


        public object Build(IPsiSourceFile currentAssetSourceFile, AssetDocument assetDocument)
        {
            var modifications = ProcessPrefabModifications(currentAssetSourceFile, assetDocument);
            if (AssetUtils.IsMonoBehaviourDocument(assetDocument.Buffer))
            {

                var anchor = AssetUtils.GetAnchorFromBuffer(assetDocument.Buffer);
                if (!anchor.HasValue)
                    return new InspectorValuesBuildResult(new LocalList<InspectorVariableUsage>(), modifications);

                var dictionary = new Dictionary<string, IAssetValue>();
                var entries = assetDocument.Document.GetUnityObjectProperties()?.Entries;
                if (entries == null)
                    return new InspectorValuesBuildResult(new LocalList<InspectorVariableUsage>(), modifications);

                foreach (var entry in entries)
                {
                    var key = entry.Key.GetScalarText();
                    if (key == null || ourIgnoredMonoBehaviourEntries.Contains(key))
                        continue;

                    foreach (var deserializer in myDeserializers)
                    {
                        try
                        {
                            if (deserializer.TryGetInspectorValue(currentAssetSourceFile, entry.Content, out var resultValue))
                            {
                                dictionary[key] = resultValue;
                                break;
                            }
                        }
                        catch (Exception e)
                        {
                            myLogger.Error(e, "An error occurred while deserializing value {0}", deserializer.GetType().Name);
                        }
                    }
                }

                if (dictionary.TryGetValue(UnityYamlConstants.ScriptProperty, out var scriptValue) && scriptValue is AssetReferenceValue referenceValue
                                                                                                   && referenceValue.Reference is ExternalReference script)
                {
                    var location = new LocalReference(currentAssetSourceFile.PsiStorage.PersistentIndex.NotNull("owningPsiPersistentIndex != null"), anchor.Value);
                    var result = new LocalList<InspectorVariableUsage>();

                    foreach (var (key, value) in dictionary)
                    {
                        if  (key.Equals(UnityYamlConstants.ScriptProperty) || key.Equals(UnityYamlConstants.GameObjectProperty))
                            continue;

                        result.Add(new InspectorVariableUsage(location, script, key, value));
                    }

                    return new InspectorValuesBuildResult(result, modifications);
                }
            }

            return new InspectorValuesBuildResult(new LocalList<InspectorVariableUsage>(), modifications);
        }