The struct can keep track of where the include came from, which gives us proper backtraces.
They must be non-empty, and match a restrictive regexp.