proc `as`[T: tuple](value: T; typ: typedesc): T
macro extend(a, b: typedesc): typedesc
macro join(exprs: varargs[typed]): untyped