// Tracks whether a source token has been matched
boolean[][] sourceMatches = new boolean[allSourceTokens.length][];
// Build source tokens
for (int i = 0; i < mapping.getSourceProperties().size(); i++) {
PropertyInfo source = mapping.getSourceProperties().get(i);
NameableType nameableType = NameableType.forPropertyType(source.getPropertyType());
allSourceTokens[i] = configuration.getSourceNameTokenizer().tokenize(source.getName(),
nameableType);
sourceMatches[i] = new boolean[allSourceTokens[i].length];
totalSourceTokens += allSourceTokens[i].length;
}
for (int destIndex = 0; destIndex < mapping.getDestinationProperties().size(); destIndex++) {
PropertyInfo dest = mapping.getDestinationProperties().get(destIndex);
NameableType nameableType = NameableType.forPropertyType(dest.getPropertyType());
String[] destTokens = configuration.getDestinationNameTokenizer().tokenize(dest.getName(),
nameableType);
totalDestTokens += destTokens.length;
for (int destTokenIndex = 0; destTokenIndex < destTokens.length
&& matches < totalSourceTokens; destTokenIndex++) {