CUnion implements PUnion<CUnion,CField> { @Nonnull @Override public String asString() { return CStruct.asString(this); } private  CUnion(Builder builder); @Override boolean has(int key); @Override @SuppressWarnings("unchecked") T get(int key); @Nonnull @Override PMessageBuilder<CUnion,CField> mutate(); @Nonnull @Override String asString(); @Override String toString(); @Nonnull @Override CUnionDescriptor descriptor(); @Override boolean unionFieldIsSet(); @Nonnull @Override CField unionField(); @Override boolean equals(Object o); @Override int hashCode(); @Override int compareTo(@Nonnull CUnion other);  }
@Test public void testUnionBuilder_mutator() { CUnion.Builder builder = normal.builder(); builder.set(3, struct.builder().build()); builder.mutator(3).set(1, "first"); builder.mutator(3).set(2, "second"); assertThat(builder.build().asString(), is("{third={first=\"first\",second=\"second\"}}")); }