{"record":{"id":"3055bbed4ed9de25","repo":"stride3d/stride","slug":"there-is-currently-no-link-between-elements-0-and-1","errorCode":null,"errorMessage":"There is currently no link between elements '{0}' and '{1}'","messagePattern":"There is currently no link between elements '(.+?)' and '(.+?)'","errorType":"exception","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"sources/assets/Stride.Core.Assets/Analysis/AssetDependencies.cs","lineNumber":293,"sourceCode":"    {\n        return RemoveLink(ref missingChildren, id, ContentLinkType.All);\n    }\n\n    private static void AddLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetLink contentLink)\n    {\n        dictionary ??= [];\n\n        var id = contentLink.Element.Id;\n        if (dictionary.TryGetValue(id, out var existingLink))\n            contentLink.Type |= existingLink.Type;\n\n        dictionary[id] = contentLink;\n    }\n\n    private AssetLink GetLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetId id)\n    {\n        if (dictionary == null || !dictionary.TryGetValue(id, out var value))\n            throw new ArgumentException(\"There is currently no link between elements '{0}' and '{1}'\".ToFormat(Item.Id, id));\n\n        return value;\n    }\n\n    private AssetLink RemoveLink(ref Dictionary<AssetId, AssetLink>? dictionary, AssetId id, ContentLinkType type)\n    {\n        if (dictionary == null || !dictionary.TryGetValue(id, out var oldLink))\n            throw new ArgumentException(\"There is currently no link between elements '{0}' and '{1}'\".ToFormat(Item.Id, id));\n        var newLink = oldLink;\n\n        newLink.Type &= ~type;\n        oldLink.Type &= type;\n\n        if (newLink.Type == 0)\n            dictionary.Remove(id);\n\n        if (dictionary.Count == 0)\n            dictionary = null;","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/assets/Stride.Core.Assets/Analysis/AssetDependencies.cs#L275-L311","documentation":"Internal lookup guard in AssetDependencies.GetLink: a link lookup (in, out, or broken-out) was requested for an AssetId that has no recorded AssetLink in the corresponding dictionary. Callers asked for a dependency link that was never registered between the two elements.","triggerScenarios":"Thrown at sources/assets/Stride.Core.Assets/Analysis/AssetDependencies.cs:293 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the dependency link exists (e.g. via ContainsLink-style checks) before querying GetLinkIn/GetLinkOut","Register the link first with the builder API that populates the link dictionaries","Ensure asset ids passed are the ones analyzed, not stale ids from a previous analysis pass"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}