public function writeObject($className, $objectFields, IProtocolFormatter $writer)
 {
     if (is_null($className)) {
         $writer->beginWriteObjectMap(count($objectFields));
     } else {
         $writer->beginWriteNamedObject($className, count($objectFields));
     }
     $keys = array_keys($objectFields);
     $fieldCount = count($objectFields);
     for ($i = 0; $i < $fieldCount; $i++) {
         $fieldName = $keys[$i];
         $writer->writeFieldName($fieldName);
         $writer->beginWriteFieldValue();
         try {
             MessageWriter::writeObject($objectFields[$fieldName], $writer);
         } catch (Exception $exception) {
             if (LOGGING) {
                 Log::logException(LoggingConstants::ERROR, "unable to serialize object's field " . $fieldName, $exception);
             }
         }
         $writer->endWriteFieldValue();
     }
     if (is_null($className)) {
         $writer->endWriteObjectMap();
     } else {
         $writer->endWriteNamedObject();
     }
 }