Report errors for usage of private types when generating declaration file

Currently this change reports errors only for heritage clause and constraints of type parameters if the name is not public
moved the function definitions in the bottom