public void write(Object o) throws IOException {
if (o instanceof Message) {
Message message = (Message) o;
Descriptor descriptor = message.getDescriptorForType();
MessageMapper mapper = MessageMapper.getMessageMapper(descriptor);
mapper.write(message, protobuf);
} else if (o instanceof List) {
protobuf.beginArray();
for (Object i : (List) o) {
write(i);
}