class MessageToBuilderConverter implements ConditionalConverter<Message, Builder> {
  @Override
  public MatchResult match(Class<?> sourceType, Class<?> destinationType) {<FILL_FUNCTION_BODY>}

  @Override
  public Builder convert(MappingContext<Message, Builder> context) {
    return context.getSource().toBuilder();
  }
}

    boolean match = Message.class.isAssignableFrom(sourceType)
        && Builder.class.isAssignableFrom(destinationType)
        && sourceType.equals(ProtobufHelper.messageOfBuilder(destinationType));
    return match ? MatchResult.FULL : MatchResult.NONE;
  
<no_super_class>