Documentation for phasers
CHECK assembled from the following types:
Runs at compile time, as late as possible, only runs once.
Can have a return value that is provided even in later phases.
Code that is generated at runtime can still fire off
INIT phasers, though of course those phasers can't do things that would require travel back in time. You need a wormhole for that.