package jp.gr.java_conf.daisy.ajax_mutator.mutator;

/**
 * Interface for mutator, which apply mutation operation to AST.
 *
 * @author Kazuki Nishiura
 */
public interface Mutator {
    /**
     * @return summary of applied mutation information, if mutation is applied
     *         because of any reasons, return null.
     */
    public String applyMutation();

    public void undoMutation();

    /**
     * skip doing mutation for current mutation target possessed inside this
     * instance.
     */
    public void skipMutation();

    /**
     * @return true if this mutator cannot applied mutation any more.
     */
    public boolean isFinished();

    /**
     * @return numberOfMutation, which indicates the maximum number of mutation
     *            that this mutator will apply.
     */
    public int numberOfMutation();

    /**
     * @return identifier of mutation applied by this mutator.
     */
    public String mutationName();
}

@@ -255,23 +255,19 @@
 tion is 
-applied
+NOT
 %0A     * 
@@ -278,22 +278,28 @@
     
-because of any
+applied for whatever
  rea
@@ -369,137 +369,367 @@
     
-public void undoMutation();%0A%0A    /**%0A     * skip doing mutation for current mutation target possessed inside this%0A     * instance
+/**%0A     * Undo the mutation applied by %7B@link #applyMutation()%7D. This method MUST%0A     * NOT be called immediately after %7B@link #applyMutation()%7D returns null.%0A     */%0A    public void undoMutation();%0A%0A    /**%0A     * skip doing mutation for current mutation target probably because this%0A     * mutant is already considered and killed in past mutation analysis
 .%0A  
@@ -977,27 +977,24 @@
 ation%0A     *
-   
          tha

modify comment on Muatator