code: async def create(
              cls, node: Union[Node, str],
              cache_device: Union[BlockDevice, Partition]):
          
          params = {}
          if isinstance(node, str):
              params['system_id'] = node
          elif isinstance(node, Node):
              params['system_id'] = node.system_id
          else:
              raise TypeError(
                  'node must be a Node or str, not %s' % (
                      type(node).__name__))
          if isinstance(cache_device, BlockDevice):
              params['cache_device'] = cache_device.id
          elif isinstance(cache_device, Partition):
              params['cache_partition'] = cache_device.id
          else:
              raise TypeError(
                  'cache_device must be a BlockDevice or Partition, not %s' % (
                      type(cache_device).__name__))
  
          return cls._object(await cls._handler.create(**params))
docs: Create a BcacheCacheSet on a Node.
  
          :param node: Node to create the interface on.
          :type node: `Node` or `str`
          :param cache_device: Block device or partition to create
              the cache set on.
          :type cache_device: `BlockDevice` or `Partition`