void assignToRow( Atom a ) throws Exception
    {
        if ( !addToExisting(a) )
        {
            Row r = new Row( sigla, groups, base );
            // this will always be a nested row
            r.setNested( this.nested() );
            FragList fl = new FragList();
            fl.setBase( a.versions.nextSetBit(base)==base );
            fl.add( a );
            r.add( fl );
            r.versions.or( a.versions );
            // contraint it to the versions of the table
            r.versions.and( this.versions );
            addRow( r );
            //System.out.println("Created row "+Utils.bitSetToString(sigla,
            //    r.versions));
            if ( r.versions==null || r.versions.isEmpty() )
                System.out.println("row versions are empty");
        }
    }