class_docstr: Persistent double ended queue (deque). Allows quick appends and pops in both ends. Implemented
  using two persistent lists.
  
  A maximum length can be specified to create a bounded queue.
  
  Fully supports the Sequence and Hashable protocols including indexing and slicing but
  if you need fast random access go for the PVector instead.
  
  Do not instantiate directly, instead use the factory functions :py:func:`dq` or :py:func:`pdeque` to
  create an instance.
  
  Some examples:
  
  >>> x = pdeque([1, 2, 3])
  >>> x.left
  1
  >>> x.right
  3
  >>> x[0] == x.left
  True
  >>> x[-1] == x.right
  True
  >>> x.pop()
  pdeque([1, 2])
  >>> x.pop() == x[:-1]
  True
  >>> x.popleft()
  pdeque([2, 3])
  >>> x.append(4)
  pdeque([1, 2, 3, 4])
  >>> x.appendleft(4)
  pdeque([4, 1, 2, 3])
  
  >>> y = pdeque([1, 2, 3], maxlen=3)
  >>> y.append(4)
  pdeque([2, 3, 4], maxlen=3)
  >>> y.appendleft(4)
  pdeque([4, 1, 2], maxlen=3)
code: def _is_empty(self):
      return not self._left_list and not self._right_list
  
imports: from ._compat import Sequence, Hashable
  from itertools import islice, chain
  from numbers import Integral
  from pyrsistent._plist import plist
label_desc: Use image node_id 11 for calling the PDeque obj's underlying member method code with example usage: obj._is_empty() and returns: unknown