class DotByTildaEscapeUtil {

    public String[] splitByDotUnEscapeTokens(String dotQualifiedString){
        validateBeforeUnEscape(dotQualifiedString);
        if(dotQualifiedString == null) return null;
        final Matcher matcher = SPLIT_PATTERN.matcher(dotQualifiedString);
        int start = 0;
        List<String> tokens = new ArrayList<String>();
        while (matcher.find()){
            final int end = matcher.end();
            tokens.add(dotQualifiedString.substring(start, end - 1));
            start = end;
        }
        tokens.add(dotQualifiedString.substring(start, dotQualifiedString.length()));
        final String[] split = tokens.toArray(new String[tokens.size()]);
        for(int i = 0; i < split.length; i++){
            split[i] = unEscapeDot(split[i], false);
        }
        return split;
    }

}