private void writeObjectDictionary(Dictionary obj) throws IOException {
        logger.log(Level.FINER, "writeObjectDictionary()  obj: {0}", obj);
        if (obj == null)
            throw new IllegalArgumentException("Object must be non-null");
        Reference ref = obj.getPObjectReference();
        logger.log(Level.FINER, "writeObjectDictionary()  ref: {0}", ref);
        if (ref == null)
            throw new IllegalArgumentException("Reference must be non-null for object: " + obj);

        if (obj.isDeleted()) {
            //if (!obj.isNew()) {
            //    addEntry( new Entry(ref) );
            //}
            // Make deleted entries for unused object numbers resulting from
            // deleting newly created objects
            addEntry( new Entry(ref) );
            return;
        }
        addEntry( new Entry(ref, startingPosition + output.getCount()) );
        
        writeInteger(ref.getObjectNumber());
        output.write(SPACE);
        writeInteger(ref.getGenerationNumber());
        output.write(SPACE);
        output.write(BEGIN_OBJECT);
        writeDictionary(obj);
        output.write(END_OBJECT);
    }