//generated by abstract-syntax-gen
package de.peeeq.wurstscript.jassIm;
import java.util.*;

public interface ImMethod extends JassImElementWithName, ElementWithTrace, Element {
    void setTrace(de.peeeq.wurstscript.ast.Element trace);
    de.peeeq.wurstscript.ast.Element getTrace();
    void setMethodClass(ImClassType methodClass);
    ImClassType getMethodClass();
    void setName(String name);
    String getName();
    void setImplementation(ImFunction implementation);
    ImFunction getImplementation();
    void setSubMethods(java.util.List<ImMethod> subMethods);
    java.util.List<ImMethod> getSubMethods();
    void setIsAbstract(boolean isAbstract);
    boolean getIsAbstract();
    Element getParent();
    ImMethod copy();
    ImMethod copyWithRefs();
    void clearAttributes();
    void clearAttributesLocal();
    /** */
    public abstract String toString();
    /** */
    public abstract ImFunction getNearestFunc();
    /** */
    public abstract de.peeeq.wurstscript.ast.Element attrTrace();
    /** */
    public abstract ImProg attrProg();
    /** */
    public abstract ImClass attrClass();
}