> - if the type is indefinite, you can't declare an object of that
>   type.  Of course, the full declaration makes it definite inside
>   the private parts of the package.  But you can't have an object
>   of that type outside the package.  This may be a problem or a
>   feature, depending on exactly what you're trying to do.

You may want it in the private part to make it common to all child units.
But you could just as easily put it in a private child and have the other
child units with it.  But if you can't have an object of that type outside
the package, is there any point in having the type visible?