@org.junit.Test
  public void toJson() throws Exception {
    JsonObject json =
        GsonProto.toJson(
            Test.A
                .newBuilder()
                .setA(Test.B.newBuilder().setA(1))
                .setB(true)
                .setC(1)
                .setD(1)
                .setE(1)
                .setF(1)
                .setG(1)
                .setH(1)
                .setI(1)
                .setJ(1)
                .setK(1)
                .setL(1)
                .setM("one"));

    assertEquals(1, json.get("a").getAsJsonObject().get("a").getAsInt());
    assertEquals(true, json.get("b").getAsBoolean());
    assertEquals(1, json.get("c").getAsInt());
    assertEquals(1, json.get("d").getAsInt());
    assertEquals(1, json.get("e").getAsInt());
    assertEquals(1, json.get("f").getAsInt());
    assertEquals(1, json.get("g").getAsInt());
    assertEquals(1, json.get("h").getAsLong());
    assertEquals(1, json.get("i").getAsLong());
    assertEquals(1, json.get("j").getAsLong());
    assertEquals(1, json.get("k").getAsLong());
    assertEquals(1, json.get("l").getAsLong());
    assertEquals("one", json.get("m").getAsString());
  }
  @org.junit.Test
  public void fromJson() throws Exception {
    JsonObject json =
        new JsonParser()
            .parse(
                "{ 'a' : { 'a' : 1 }, 'b' : true, 'c' : 1, 'd' : 1, 'e' : 1, 'f' : 1, 'g' : 1, 'h' : 1, 'i' : 1, 'j' : 1, 'k' : 1, 'l' : 1, 'm' : 'one' }")
            .getAsJsonObject();
    Test.A msg = GsonProto.fromJson(json, Test.A.class);

    assertEquals(1, msg.getA().getA());
    assertEquals(true, msg.getB());
    assertEquals(1, msg.getC());
    assertEquals(1, msg.getD());
    assertEquals(1, msg.getE());
    assertEquals(1, msg.getF());
    assertEquals(1, msg.getG());
    assertEquals(1, msg.getH());
    assertEquals(1, msg.getI());
    assertEquals(1, msg.getJ());
    assertEquals(1, msg.getK());
    assertEquals(1, msg.getL());
    assertEquals("one", msg.getM());
  }