PROTON-2454 Clear body when bodySections is called in all cases

Adding a collection of body sections should clear any previous singular
or collection assigned value always.
diff --git a/protonj2-client/src/main/java/org/apache/qpid/protonj2/client/impl/ClientMessage.java b/protonj2-client/src/main/java/org/apache/qpid/protonj2/client/impl/ClientMessage.java
index 0bfc729..35b336e 100644
--- a/protonj2-client/src/main/java/org/apache/qpid/protonj2/client/impl/ClientMessage.java
+++ b/protonj2-client/src/main/java/org/apache/qpid/protonj2/client/impl/ClientMessage.java
@@ -650,13 +650,14 @@
     public ClientMessage<E> bodySections(Collection<Section<?>> sections) {
         if (sections == null || sections.isEmpty()) {
             bodySections = null;
-            body = null;
         } else {
             List<Section<?>> result = new ArrayList<>(sections.size());
             sections.forEach(section -> result.add(validateBodySections(messageFormat, result, section)));
             bodySections = result;
         }
 
+        body = null; // Body is always cleared by this assignment.
+
         return this;
     }
 
diff --git a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ClientMessageTest.java b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ClientMessageTest.java
index e1fee22..1a695b2 100644
--- a/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ClientMessageTest.java
+++ b/protonj2-client/src/test/java/org/apache/qpid/protonj2/client/impl/ClientMessageTest.java
@@ -534,6 +534,24 @@
     }
 
     @Test
+    public void testReplaceOriginalWithSetBodySectionClearsOriginal() {
+        ClientMessage<Object> message = ClientMessage.create();
+
+        message.body("string");  // AmqpValue
+
+        List<Section<?>> expected = new ArrayList<>();
+        expected.add(new Data(new byte[] { 0 }));
+        expected.add(new Data(new byte[] { 1 }));
+
+        assertEquals("string", message.body());
+        assertEquals(1, message.bodySections().size());
+
+        message.bodySections(expected);
+
+        assertEquals(expected.size(), message.bodySections().size());
+    }
+
+    @Test
     public void testReplaceOriginalWithSetBodySectionDoesThrowValidationErrorIfInValid() {
         ClientMessage<Object> message = ClientMessage.create();