def METHOD_NAME(self, defer):
    """Get the value for this system variable.
    :params bool defer: If the variable is deferable, return a
        DeferredVariable object instead.
    """
    if defer and self.is_deferable:
        return pavilion.deferred.DeferredVariable()
    try:
        values = self._get()
    except Exception as err:
        raise SystemPluginError(
            "Error getting value for system plugin {s.name}."
            .format(s=self), err)
    chk_vals = values
    if not isinstance(chk_vals, list):
        chk_vals = [chk_vals]
    for i in range(len(chk_vals)):
        if not isinstance(chk_vals[i], dict):
            chk_vals[i] = {None: chk_vals[i]}
    for vals in chk_vals:
        for key, val in vals.items():
            if not isinstance(val, str):
                raise SystemPluginError(
                    "System variable plugin {s.path} called {s.name} "
                    "returned non-string value '{val}' in '{values}'"
                    .format(s=self, val=val, values=values))
    return values