code: @Override
      protected void writeArbitraryObject(Object object) {
          log.debug("writeArbitraryObject: {}", object);
          Class<?> objectClass = object.getClass();
          // If we need to serialize class information...
          if (!objectClass.isAnnotationPresent(Anonymous.class)) {
              putString(Serializer.getClassName(objectClass));
          } else {
              putString("");
          }
          // Store key/value pairs
          amf3_mode += 1;
          // Iterate thru fields of an object to build "name-value" map from it
          for (Field field : objectClass.getFields()) {
              String fieldName = field.getName();
              log.debug("Field: {} class: {}", field, objectClass);
              // Check if the Field corresponding to the getter/setter pair is transient
              if (!serializeField(objectClass, fieldName, field, null)) {
                  continue;
              }
              Object value;
              try {
                  // Get field value
                  value = field.get(object);
              } catch (IllegalAccessException err) {
                  // Swallow on private and protected properties access exception
                  continue;
              }
              // Write out prop name
              putString(fieldName);
              // Write out
              Serializer.serialize(this, field, null, object, value);
          }
          amf3_mode -= 1;
          // Write out end of object marker
          putString("");
      }
docs: {@inheritDoc}