question: private String [ ] splitOutGameMoveNumber ( String wordToken ) { if ( Character . isDigit ( wordToken . charAt ( 0 ) ) ) { int firstDotIndex = wordToken . indexOf ( '.' ) ; if ( firstDotIndex != - 1 ) { int firstThreeDotIndex = wordToken . indexOf ( "..." ) ; if ( firstThreeDotIndex != - 1 ) { if ( wordToken . length ( ) > firstThreeDotIndex + 3 ) { return new String [ ] { wordToken . substring ( 0 , firstThreeDotIndex ) , wordToken . substring ( firstThreeDotIndex + 3 ) } ; } else { return new String [ ] { wordToken . substring ( 0 , firstThreeDotIndex ) } ; } } else { if ( wordToken . length ( ) > firstDotIndex + 1 ) { return new String [ ] { wordToken . substring ( 0 , firstDotIndex ) , wordToken . substring ( firstDotIndex + 1 ) } ; } else { return new String [ ] { wordToken . substring ( 0 , firstDotIndex ) } ; } } } } return null ; }
target:  Move numbers are in the format 1. or 1... If wordToken isn't a move number or doesn't start with a move number then null is returned. Otherwise if it contains a move number and nothing else then a String[1] is returned with the move number stripped of all '.'s. Otherwise a String[2] is returned where index 0 is the move number with '.' stripped and index 1 is the rest of the word token.