docs: def decode(self, bytes, index=None, raw=False):
          """decode(bytes[[, index], raw=False]) -> value1, ..., valueN
  
          Decodes the given sequence of bytes according to this Array's
          element type.
  
          If the optional `index` parameter is an integer or slice, then
          only the element(s) at the specified position(s) will be
          decoded and returned.
          """
          if index is None:
              index = slice(0, self.nelems)
  
          if type(index) is slice:
              step    = 1 if index.step is None else index.step
              indices = xrange(index.start, index.stop, step)
              result  = [ self.decodeElem(bytes, n, raw) for n in indices ]
          else:
              result = self.decodeElem(bytes, index, raw)
  
          return result