docs: def copy_to(self, new_key, bucket=None):
      """Copies this item to the specified new key.
  
      Args:
        new_key: the new key to copy this item to.
        bucket: the bucket of the new item; if None (the default) use the same bucket.
      Returns:
        An Item corresponding to new key.
      Raises:
        Exception if there was an error copying the item.
      """
      if bucket is None:
        bucket = self._bucket
      try:
        new_info = self._api.objects_copy(self._bucket, self._key, bucket, new_key)
      except Exception as e:
        raise e
      return Item(bucket, new_key, new_info, context=self._context)