private void init() {
        Iterator varIt = this.variants.iterator();
        while (varIt.hasNext()) {
            ASTVariant variant = (ASTVariant)varIt.next();
            Token invariant = null;
            String label = null;
            Iterator assocIt = this.assocs.iterator();
            while (assocIt.hasNext()) {
                IdentityHashMap var2inv = (IdentityHashMap)assocIt.next();
                invariant = (Token)var2inv.get(variant);
                //discard white-space invariants
                if (invariant!=null) {
                    if (label==null) label = invariant.getText();
                    if (!label.equals(invariant.getText())) {
                        log.fine("Discarding annotation of "+variant+" since it is associated "+
                                 "both to \""+label+"\" and \""+invariant.getText()+"\"");
                        label = null;
                        break;
                    }
                }
            }
            if (label!=null) {
                log.fine("Combined annotation of "+variant+" is \""+invariant+"\"");
                this.var2inv.put(variant, invariant);
            }
        }
        log.fine("Final annotations: "+this.var2inv);
    }