    @Test
    public void testArrayMsgToString() {

        assertEquals("ArrayMsg [strings=null, ints=null, basics=null]", new ArrayMsg(null, null, null).toString());
        assertEquals("ArrayMsg [strings=[], ints=[], basics=[]]", 
                new ArrayMsg(new String[0], new int[0], new Basic[0]).toString());
        assertEquals("ArrayMsg [strings=[a], ints=[1], basics=[Basic [int32=123, string=Hello]]]",
                new ArrayMsg(new String[]{"a"}, new int[]{1},
                        new Basic[]{new Basic(123, "Hello")}).toString());
        assertEquals("ArrayMsg [strings=[a, b], ints=[1, 2], basics=[Basic [int32=123, string=Hello], Basic [int32=124, string=Hello]]]",
                new ArrayMsg(new String[]{"a", "b"}, new int[]{1, 2},
                        new Basic[]{new Basic(123, "Hello"), new Basic(124, "Hello")}).toString());
        assertEquals("ArrayMsg [strings=[], ints=[], basics=[null]]",
                new ArrayMsg(new String[0], new int[0], new Basic[]{null}).toString());
        assertEquals("ArrayMsg [strings=[], ints=[], basics=[null, null]]",
                new ArrayMsg(new String[0], new int[0], new Basic[]{null, null}).toString());
    }