A program whose strings have not been yet been loaded into the thread-local string table
This means that an UnloadedProgram cannot be executed. However, it also means that an
UnloadedProgram is also self-contained, which is useful for exporting to a file or
between threads.