@Override
 public void writeCustomTypePrefixForObject(Object value, JsonGenerator jgen, String typeId)
     throws IOException {
   if (typeId == null) {
     jgen.writeStartObject();
   } else if (jgen.canWriteTypeId()) {
     jgen.writeTypeId(typeId);
     jgen.writeStartObject();
   } else {
     jgen.writeStartObject();
     jgen.writeStringField(_typePropertyName, typeId);
   }
 }
 @Override
 public void writeTypePrefixForObject(Object value, JsonGenerator jgen, Class<?> type)
     throws IOException {
   final String typeId = idFromValueAndType(value, type);
   if (typeId == null) {
     jgen.writeStartObject();
   } else if (jgen.canWriteTypeId()) {
     jgen.writeTypeId(typeId);
     jgen.writeStartObject();
   } else {
     jgen.writeStartObject();
     jgen.writeStringField(_typePropertyName, typeId);
   }
 }