}
private Map coalesceLine(Map input) {
final Map output = new TreeMap();
final Iterator kit = input.keySet().iterator();
TextPosition lastFragment = null;
String lastString = null;
Integer lastKey = null;
while (kit.hasNext())
{
final Integer key = (Integer) kit.next();
final TextPosition thisFragment = (TextPosition) input.get(key);
if (lastFragment != null && adjacent(lastFragment, thisFragment))
{
lastFragment = thisFragment;
lastString += thisFragment.getCharacter();
}
else
{
if (lastFragment != null)
{
output.put(lastKey, lastString);
}
lastFragment = thisFragment;
lastString = thisFragment.getCharacter();
lastKey = key;
}
if (lastFragment != null)
{
output.put(lastKey, lastString);