issaved tells us that a var is one of them (except is_final), but not which.
We can determine a const by creating a runtime:
/proc/is_const(datum/holder, varname)
if (holder == FALSE)
try
global.vars[varname] = global.vars[varname]
return FALSE
catch (var/exception/e)
return TRUE
try
holder.vars[varname] = holder.vars[varname]
return FALSE
catch (var/exception/e)
return TRUE
But that's obviously pretty disgusting.
I could go either way on is_static vs is_global.