$funcs * @param list $tables * @param list $mems * @param list $globals * @param list $elems * @param list $datas */ public function __construct( public array $funcs, public array $tables, public array $mems, public array $globals, public array $elems, public array $datas, ) { } public static function empty(): self { return new self([], [], [], [], [], []); } public function registerFunc(FuncInst $func): ExternVals\Func { $this->funcs[] = $func; return ExternVal::Func(count($this->funcs) - 1); } }