parsing byte arrays

def readAMF3ByteArray(self):
 typ = self.readAMF3Integer()
 isReference = (typ & 0x01) == 0
 if isReference:
  reference = typ >> 1
  if reference < len(self.objectReferences):
   if not self.objectReferences[reference]:
    raise ReferenceError #
   return self.objectReferences[reference]
  else:
   raise ReferenceError
 else:
  length = typ >> 1
  try: #first assume we used byteArray.compress() from flash / flex
   inflatedStream = zlib.decompress(self.stream[self.streamIndex:length])
   arr = unpack('c'*len(inflatedStream), inflatedStream)
  except: #if an exception happens, it wasn't compressed
   arr = unpack('c'*length, self.stream[self.streamIndex:length])
  self.streamIndex += length
  self.objectReferences.append(arr)
  return arr