protected function getKey($x)
{
if (is_int($x) || is_float($x) || is_string($x) || $x instanceof Set) {
return "{$x}";
} elseif (is_object($x)) {
return get_class($x) . '(' . spl_object_hash($x) . ')';
} elseif (is_array($x)) {
return 'Array(' . serialize($x) . ')';
} elseif (is_resource($x)) {
return 'Resource(' . strval($x) . ')';
}
return null;
}