namespace Sources; union SourceValue { NullSource, RuntimeSource, FileFragmentSource, } table Source { value:SourceValue (required); } table NullSource { } table RuntimeSource { } table FileFragmentSource { source_text:SourceText; start_character_index:uint; end_character_index:uint; } table SourceText { name:string (required); contents:string (required); }