void addAlmostSet( int offset, BitSet bs, BitSet missing, String frag )
    {
        this.versions.or(bs);
        if ( this.offset == -1 )
            this.offset = offset;
        this.state = SectionState.almost;
        for (int i = bs.nextSetBit(1); i>= 0; 
            i = bs.nextSetBit(i+1))
        {
            if ( lists.containsKey((short)i) )
            {
                FragList fl = lists.get( (short)i );
                fl.add( FragKind.almost, frag, bs );
            }
            else
            {
                FragList fl = new FragList();
                fl.add( FragKind.almost, frag, bs );
                lists.put( (short)i, fl );
            }
        }
        // fill in the gaps with empty fraglists
        for (int i = missing.nextSetBit(1); i>= 0; 
                i = missing.nextSetBit(i+1))
        {
            if ( !lists.containsKey((short)i) )
            {
                FragList fl = new FragList();
                fl.add( FragKind.almost, "", missing );
                lists.put( (short)i, fl );
            }
        }
    }