Is header generation substantially faster than compilation? I guess it skips codegen and instead replaces it with header generation, but isn't most of the time spent in parsing/semantic analysis? Or is header generation done in some hacky way that's much faster than full parsing?