key, or null if nothing is available
	redef fun [](key)
	do
		var nsstr = user_defaults.string_for_key(key.to_nsstring)
		if nsstr.address_is_null then return null
		# TODO report errors
		var deserializer = new JsonDeserializer(nsstr.to_s)
		var deserialized = deserializer.deserialize
		var errors = deserializer.errors
		if errors.not_empty then
			# An update may have broken the versioning compatibility
			print_error "{class_name} error at deserialization: {errors.join(", ")}"
			return null # Let's be safe
		end
		return deserialized
	end
					lib/ios/data_store.nit:27,2--45,4
				
	redef fun [](key)
	do
		# Get DB
		var db = self.db
		if db == null then return null
		# Prepare SELECT statement
		var stmt = db.select("* FROM {db_table} WHERE key == {key.to_sql_string}")
		if stmt == null then return null
		# Execute statment
		for row in stmt do
			# Get from statement
			var serialized = row[1].to_s
			stmt.close
			# Deserialize
			var deserializer = new JsonDeserializer(serialized)
			var deserialized = deserializer.deserialize
			var errors = deserializer.errors
			if errors.not_empty then
				# An update may have broken the versioning compatibility
				print_error "{class_name} error at deserialization: {errors.join(", ")}"
				return null # Let's be safe
			end
			return deserialized
		end
		stmt.close
		return null
	end
					lib/linux/data_store.nit:61,2--93,4
				
	redef fun [](key) do return shared_preferences[key]
					lib/android/data_store.nit:30,2--52