The BuildSystem classes have the same structure as the RegressionTest classes used to before the variables were introduced. We could spin out a lighter version of the RegressionTestMeta and make use of the variables also in these BuildSystem classes. That would standardise the use of the required keyword throughout ReFrame, instead of each module defining their own _UndefinedType.
#2027 shows why this would be beneficial