docs: def _write_value(self, field_type, value):
          """
          Writes an item of an array
  
          :param field_type: Value type
          :param value: The value itself
          """
          if len(field_type) > 1:
              # We don't need details for arrays and objects
              field_type = field_type[0]
  
          if field_type == self.TYPE_BOOLEAN:
              self._writeStruct(">B", 1, (1 if value else 0,))
          elif field_type == self.TYPE_BYTE:
              self._writeStruct(">b", 1, (value,))
          elif field_type == self.TYPE_CHAR:
              self._writeStruct(">H", 1, (ord(value),))
          elif field_type == self.TYPE_SHORT:
              self._writeStruct(">h", 1, (value,))
          elif field_type == self.TYPE_INTEGER:
              self._writeStruct(">i", 1, (value,))
          elif field_type == self.TYPE_LONG:
              self._writeStruct(">q", 1, (value,))
          elif field_type == self.TYPE_FLOAT:
              self._writeStruct(">f", 1, (value,))
          elif field_type == self.TYPE_DOUBLE:
              self._writeStruct(">d", 1, (value,))
          elif field_type == self.TYPE_OBJECT or field_type == self.TYPE_ARRAY:
              if value is None:
                  self.write_null()
              elif isinstance(value, JavaEnum):
                  self.write_enum(value)
              elif isinstance(value, (JavaArray, JavaByteArray)):
                  self.write_array(value)
              elif isinstance(value, JavaObject):
                  self.write_object(value)
              elif isinstance(value, JavaString):
                  self.write_string(value)
              elif isinstance(value, str):
                  self.write_blockdata(value)
              else:
                  raise RuntimeError("Unknown typecode: {0}".format(field_type))
          else:
              raise RuntimeError("Unknown typecode: {0}".format(field_type))