package org.spoofax.terms.visitor;

import org.spoofax.interpreter.terms.IStrategoAppl;
import org.spoofax.interpreter.terms.IStrategoInt;
import org.spoofax.interpreter.terms.IStrategoList;
import org.spoofax.interpreter.terms.IStrategoPlaceholder;
import org.spoofax.interpreter.terms.IStrategoReal;
import org.spoofax.interpreter.terms.IStrategoRef;
import org.spoofax.interpreter.terms.IStrategoString;
import org.spoofax.interpreter.terms.IStrategoTerm;
import org.spoofax.interpreter.terms.IStrategoTuple;

public interface IStrategoTermVisitor {
    public abstract boolean visit(IStrategoAppl term);

    public abstract boolean visit(IStrategoList term);

    public abstract boolean visit(IStrategoTuple term);

    public abstract void visit(IStrategoInt term);

    public abstract void visit(IStrategoReal term);

    public abstract void visit(IStrategoString term);

    public abstract void visit(IStrategoRef term);

    public abstract boolean visit(IStrategoPlaceholder term);
    
    public abstract boolean visit(IStrategoTerm term);
}

@@ -506,16 +506,41 @@
 Tuple;%0A%0A
+/**%0A * Term visitor.%0A */%0A
 public i
@@ -575,408 +575,1497 @@
 r %7B%0A
+%0A
     
-public abstract boolean visit(IStrategoAppl term);%0A%0A    public abstract boolean visit(IStrategoList term);%0A%0A    public abstract boolean visit(IStrategoTuple term);%0A%0A    public abstract void visit(IStrategoInt term);%0A%0A    public abstract void visit(IStrategoReal term);%0A%0A    public abstract void visit(IStrategoString term);%0A%0A    public abstract void visit(IStrategoRef term);%0A%0A    public abstract
+/**%0A     * Visits a constructor application term.%0A     *%0A     * @param term the term being visited%0A     * @return %7B@code true%7D when a top-down traversal should visit the subterms;%0A     * otherwise, %7B@code false%7D%0A     */%0A    boolean visit(IStrategoAppl term);%0A%0A    /**%0A     * Visits a list term.%0A     *%0A     * @param term the term being visited%0A     * @return %7B@code true%7D when a top-down traversal should visit the subterms;%0A     * otherwise, %7B@code false%7D%0A     */%0A    boolean visit(IStrategoList term);%0A%0A    /**%0A     * Visits a tuple term.%0A     *%0A     * @param term the term being visited%0A     * @return %7B@code true%7D when a top-down traversal should visit the subterms;%0A     * otherwise, %7B@code false%7D%0A     */%0A    boolean visit(IStrategoTuple term);%0A%0A    /**%0A     * Visits an Int term.%0A     *%0A     * @param term the term being visited%0A     */%0A    void visit(IStrategoInt term);%0A%0A    /**%0A     * Visits a Real term.%0A     *%0A     * @param term the term being visited%0A     */%0A    void visit(IStrategoReal term);%0A%0A    /**%0A     * Visits a String term.%0A     *%0A     * @param term the term being visited%0A     */%0A    void visit(IStrategoString term);%0A%0A    /**%0A     * Visits a Ref term.%0A     *%0A     * @param term the term being visited%0A     */%0A    void visit(IStrategoRef term);%0A%0A    /**%0A     * Visits a placeholder term.%0A     *%0A     * @param term the term being visited%0A     * @return %7B@code true%7D when a top-down traversal should visit the subterms;%0A     * otherwise, %7B@code false%7D%0A     */%0A   
  boo
@@ -2107,32 +2107,212 @@
 m);%0A
+%0A
     
-%0A    public abstract
+/**%0A     * Visits a term.%0A     *%0A     * @param term the term being visited%0A     * @return %7B@code true%7D when a top-down traversal should visit the subterms;%0A     * otherwise, %7B@code false%7D%0A     */%0A   
  boo

Document term visitor