Shouldn't it be @Deprecated and binary compatible at the same time? There is no reason to mark API class as deprecated and break API at the same time if I get meaning of deprecation correct. You just let it be @Deprecated and without breaking API changes for a while so API clients are not broken immediately. Then removed in next or after next release. 

With removed public internal class DirectoryScannerIterator API is broken, why deprecation is needed then?