Returns the collected variable map, building it lazily on first call.
Map<String, String> getVariables() { return variables ??= collectVariables(scripts!); }