Since I'm going to be implementing in c#, I don't want to hobble my self from the start. Mostly this means c# strings are data types.
(Don't get distracted thinking about JavaScript, this is "Lisp as system scripting language", remember?)
record Pair(object? Data, Pair? Next)
record Pair<T>(T? Payload, Pair? Next) : base(Payload, Next)
... maybe