countTypes

Counts abstract vs concrete type declarations in one file's source text with a deliberately coarse lexical scan - it strips comments and matches declaration keywords, not a full parse. An interface is abstract; a class is abstract when abstract or sealed; everything else (concrete/data/enum/value classes, objects, Java enums) is concrete. Pure, so the regex edge cases are unit-tested here rather than through file I/O.