private static int readValue ( CharSequence chars , int pos , int leadUnit ) { int value ; if ( leadUnit < kMinTwoUnitValueLead ) { value = leadUnit ; } else if ( leadUnit < kThreeUnitValueLead ) { value = ( ( leadUnit - kMinTwoUnitValueLead ) << 16 ) | chars . charAt ( pos ) ; } else { value = ( chars . charAt ( pos ) << 16 ) | chars . charAt ( pos + 1 ) ; } return value ; }
pos is already after the leadUnit and the lead unit has bit 15 reset .