{
Map actualMap = new HashMap();
Iterator keyIter = map.keyList().iterator();
while( keyIter.hasNext() )
{
COSName key = (COSName)keyIter.next();
COSBase cosObj = map.getDictionaryObject( key );
Object actualObject = null;
if( cosObj instanceof COSString )
{
actualObject = ((COSString)cosObj).getString();
}
else if( cosObj instanceof COSInteger )
{
actualObject = new Integer( ((COSInteger)cosObj).intValue() );
}
else if( cosObj instanceof COSName )
{
actualObject = ((COSName)cosObj).getName();
}
else if( cosObj instanceof COSFloat )
{
actualObject = new Float( ((COSInteger)cosObj).floatValue() );
}
else if( cosObj instanceof COSBoolean )
{
actualObject = ((COSBoolean)cosObj).getValue() ? Boolean.TRUE : Boolean.FALSE;
}
else
{
throw new IOException( "Error:unknown type of object to convert:" + cosObj );
}
actualMap.put( key.getName(), actualObject );
}
retval = new COSDictionaryMap( actualMap, map );
}
return retval;