type A = ref object of RootObj B[T] = ref object of A assert B[float]() of B[int] assert B[string]() of B[B[int]] # Is actually terrifying