Private object modules cannot be used in public object modules as parameters or return types for public procedures, as public data members, or as fields of public user defined types

   

This error has the following cause and solution: