Well, the only problem here is that NumberSequenceKeypoint is an instance too - it uses the .new constructor function.
NumberSequence.new(NumberSequenceKeypoint.new(time, value, envelope), ...)
But yeah, the wiki is poorly documented on this part - though with autocompletion in the Script Editor in studio, you would eventually run into realizing it uses the .new constructor.