BaseMarshallerDelegate marshallerDelegate;
if (marshaller instanceof EnumMarshaller) {
if (!Enum.class.isAssignableFrom(marshaller.getJavaClass())) {
throw new IllegalArgumentException("Invalid enum marshaller (the produced class is not an Enum) : " + marshaller);
}
EnumDescriptor enumDescriptor = getEnumDescriptor(marshaller.getTypeName());
marshallerDelegate = new EnumMarshallerDelegate((EnumMarshaller) marshaller, enumDescriptor);
} else if (marshaller instanceof RawProtobufMarshaller) {
marshallerDelegate = new RawProtobufMarshallerDelegate((RawProtobufMarshaller) marshaller, this);
} else {
Descriptor messageDescriptor = getMessageDescriptor(marshaller.getTypeName());