--- /dev/null
+using Microsoft.CodeAnalysis.CSharp.Syntax;
+using Questionable.Model.Questing;
+using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
+using static Questionable.QuestPathGenerator.RoslynShortcuts;
+
+namespace Questionable.QuestPathGenerator.RoslynElements;
+
+internal static class UnlockLinkIdExtension
+{
+    public static ExpressionSyntax ToExpressionSyntax(this UnlockLinkId unlockLinkId)
+    {
+        return ObjectCreationExpression(
+                IdentifierName(nameof(UnlockLinkId)))
+            .WithArgumentList(
+                ArgumentList(
+                    SingletonSeparatedList(
+                        Argument(LiteralValue(unlockLinkId.Value)))));
+    }
+}
 
                 QuestId questId => questId.ToExpressionSyntax(),
                 SatisfactionSupplyNpcId satisfactionSupplyNpcId => satisfactionSupplyNpcId.ToExpressionSyntax(),
                 AlliedSocietyDailyId alliedSocietyDailyId => alliedSocietyDailyId.ToExpressionSyntax(),
+                UnlockLinkId unlockLinkId => unlockLinkId.ToExpressionSyntax(),
                 Vector3 vector => vector.ToExpressionSyntax(),
                 AethernetShortcut aethernetShortcut => aethernetShortcut.ToExpressionSyntax(),
                 ChatMessage chatMessage => chatMessage.ToExpressionSyntax(),