An "open generic type" is just a generic type that doesn't yet have its type specified (e.g., CargoCrate). It becomes "closed" once a concrete type has been assigned (e.g. CargoCrate).
For example, say you have something like this:
public class Basket {
T[] basketItems;
}
public class PicnicBlanket {
Basket picnicBasket; // Open type here. We don't know what T is.
}
// Closed type here: T is Food.
public class ParkPicnicBlanket : PicnicBlanket {
}
Here, picnicBasket's type is open: nothing's yet been assigned to T. When you make a concrete PicnicBlanket with a specific type -- for example, by writing PicnicBlanket p = new PicnicBlanket() -- we now call it closed.