private Set createAddHook_w(MismatchPoint m) {
        Set operators  = new HashSet();
        Iterator it = addHook_w.getFactory(m).createOperators().iterator();
        Direction dir = m.getDir();
        while (it.hasNext()) {
            //to avoid adjacencies amongst Hooks:  after the square of an addHook_w operator cannot appear an ASTHook
            addHook_w op = (addHook_w)it.next();
            
            if (check(op.isExpired(),"already expired",op)) continue;
            if (check(op.getExtension().isBorderRegion(),"border Hook",op)) continue;
            Node firstAfter = (Node)dir.getFirst(op.getRegionAfterSquare());
            if (check(firstAfter instanceof ASTHook,"Hook after square",op)) continue;
            Node lastInside = (Node)dir.getLast(op.getSquare());
            if (check(lastInside instanceof ASTHook,"Hook as last node of square",op)) continue;
            if (check(!isLLk(m, op),"not LL(k)",op)) continue;
            addOperator(operators, op);
        }
        return operators;
    }