@Test
public void testUnderscorePlacement2() {

    // Invalid: cannot put underscores
    // adjacent to a decimal point
    assertThat( getLiteral( float.class.getCanonicalName(), "3_.1415F" ) ).isNull();
    // Invalid: cannot put underscores
    // adjacent to a decimal point
    assertThat( getLiteral( float.class.getCanonicalName(), "3._1415F" ) ).isNull();
    // Invalid: cannot put underscores
    // prior to an L suffix
    assertThat( getLiteral( long.class.getCanonicalName(), "999_99_9999_L" ) ).isNull();
    // OK (decimal literal)
    assertThat( getLiteral( int.class.getCanonicalName(), "5_2" ) ).isNotNull();
    // Invalid: cannot put underscores
    // At the end of a literal
    assertThat( getLiteral( int.class.getCanonicalName(), "52_" ) ).isNull();
    // OK (decimal literal)
    assertThat( getLiteral( int.class.getCanonicalName(), "5_______2" ) ).isNotNull();
    // Invalid: cannot put underscores
    // in the 0x radix prefix
    assertThat( getLiteral( int.class.getCanonicalName(), "0_x52" ) ).isNull();
    // Invalid: cannot put underscores
    // at the beginning of a number
    assertThat( getLiteral( int.class.getCanonicalName(), "0x_52" ) ).isNull();
    // OK (hexadecimal literal)
    assertThat( getLiteral( int.class.getCanonicalName(), "0x5_2" ) ).isNotNull();
    // Invalid: cannot put underscores
    // at the end of a number
    assertThat( getLiteral( int.class.getCanonicalName(), "0x52_" ) ).isNull();
}