private Map findPathOfVariants(final Expression expression, final Map nodes2tokens) {
        final Map path2samples = new HashMap();
        new Walker(expression) {
            
            public boolean visit(ASTToken node) {
                if (node.maybeVariant()) {
                    List tokens = (List)nodes2tokens.get(node);
                    if (tokens!=null && tokens.size()>1) {
                        Set variants = new HashSet();
                        Iterator it = tokens.iterator();
                        while (it.hasNext()) {
                            Token token = (Token)it.next();
                            variants.add(token.getVariantValue());
                        }
                        if (variants.size()>1) { //hit variant
                            path2samples.put(getCurrentAbsolutePath(), variants);
                        }
                    }
                }
                return false;
            }
            
        }.visit(expression);
        return path2samples;
    }