docs: def readArray(self):
          """
          Reads an array from the stream.
  
          @warning: There is a very specific problem with AMF3 where the first
          three bytes of an encoded empty C{dict} will mirror that of an encoded
          C{{'': 1, '2': 2}}
          """
          size = self.readInteger(False)
  
          if size & REFERENCE_BIT == 0:
              return self.context.getObject(size >> 1)
  
          size >>= 1
  
          key = self.readBytes()
  
          if key == '':
              # integer indexes only -> python list
              result = []
              self.context.addObject(result)
  
              for i in xrange(size):
                  result.append(self.readElement())
  
              return result
  
          result = pyamf.MixedArray()
          self.context.addObject(result)
  
          while key:
              result[key] = self.readElement()
              key = self.readBytes()
  
          for i in xrange(size):
              el = self.readElement()
              result[i] = el
  
          return result