They don't need a valid next field. Next may return null which will terminate the (tail) recursion. If TypeInfo.next would not return a const TypeInfo the tail recursion could be replaced by a loop.
Sorry but I don't see a TypeInfo.Type.double_ in the code?