public static function is_ascii($data)
	{
		if (! ReflectionTypeHint::isValid()) return false;
		if (is_array($data))
		{
			foreach ($data as $k => &$v)
			{
				if (! self::is_ascii($k) || ! self::is_ascii($v)) return false;
			}
			return true;
		}
		#ltrim() little faster then preg_match()
		#if (is_string($data)) return preg_match('/^[\x00-\x7f]*$/sSX', $data); #deprecated
		if (is_string($data)) return ltrim($data, "\x00..\x7f") === '';
		if (is_scalar($data) || is_null($data)) return true;  #~ null, integer, float, boolean
		return false; #object or resource
	}