@Test
 public void bound() {
   Serializable[] params = new Serializable[] {TEST_P1, TEST_P2};
   I18NBoundMessage2P m = new I18NBoundMessage2P(TestMessages.P2_MSG, TEST_P1, TEST_P2);
   boundTests(
       m,
       new I18NBoundMessage2P(TestMessages.P2_MSG, TEST_P1, TEST_P2),
       new I18NBoundMessage[] {
         new I18NBoundMessage2P(TestMessages.P2_MSG, TEST_P1, TEST_P1),
         new I18NBoundMessage2P(TestMessages.P2_TTL, TEST_P1, TEST_P2),
         TestMessages.P0_MSG
       },
       params,
       TestMessages.P2_MSG,
       TEST_MSG_EN,
       TEST_MSG_FR);
   castOverride(m.getMessage());
   boundTests(
       new I18NBoundMessage2P(TestMessages.P2_TTL, TEST_P1, TEST_P2),
       new I18NBoundMessage2P(TestMessages.P2_TTL, TEST_P1, TEST_P2),
       new I18NBoundMessage[] {
         new I18NBoundMessage2P(TestMessages.P2_TTL, TEST_P1, TEST_P1),
         new I18NBoundMessage2P(TestMessages.P2_MSG, TEST_P1, TEST_P2),
         TestMessages.P0_TTL
       },
       params,
       TestMessages.P2_TTL,
       TEST_TTL_EN,
       TEST_TTL_FR);
   assertEquals(TEST_P1, m.getParam1());
   assertEquals(TEST_P2, m.getParam2());
 }
 protected void boundTests0P(
     I18NBoundMessage msg,
     I18NBoundMessage msgCopy,
     I18NBoundMessage ttl,
     I18NBoundMessage ttlCopy) {
   boundTests(
       msg,
       msgCopy,
       new I18NBoundMessage[] {ttl, new I18NBoundMessage1P(TestMessages.P1_MSG, TEST_P1)},
       I18NBoundMessage.EMPTY_PARAMS,
       TestMessages.P0_MSG,
       TEST_MSG_EN,
       TEST_MSG_FR);
   boundTests(
       ttl,
       ttlCopy,
       new I18NBoundMessage[] {msg, new I18NBoundMessage1P(TestMessages.P1_MSG, TEST_P1)},
       I18NBoundMessage.EMPTY_PARAMS,
       TestMessages.P0_TTL,
       TEST_TTL_EN,
       TEST_TTL_FR);
 }