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

public interface ModStatic extends Modifier, Element {
    void setSource(de.peeeq.wurstscript.parser.WPos source);
    de.peeeq.wurstscript.parser.WPos getSource();
    Element getParent();
    ModStatic copy();
    ModStatic copyWithRefs();
    void clearAttributes();
    void clearAttributesLocal();
    /** */
    public abstract boolean attrIsDynamicContext();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable PackageOrGlobal attrNearestPackage();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable NamedScope attrNearestNamedScope();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable WScope attrNearestScope();
    /** */
    public abstract String attrPathDescription();
    /** */
    public abstract CompilationUnit attrCompilationUnit();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable ClassDef attrNearestClassDef();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable ClassOrInterface attrNearestClassOrInterface();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable ClassOrModule attrNearestClassOrModule();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable StructureDef attrNearestStructureDef();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable FunctionImplementation attrNearestFuncDef();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable ExprClosure attrNearestExprClosure();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable ExprStatementsBlock attrNearestExprStatementsBlock();
    /** "returns the element itself if it is a NameDef or returns the referenced NameDef if the elem is a reference or returns null otherwise "*/
    public abstract @org.eclipse.jdt.annotation.Nullable NameDef tryGetNameDef();
    /** */
    public abstract de.peeeq.wurstscript.parser.WPos attrSource();
    /** "returns the position where errors are marked"*/
    public abstract de.peeeq.wurstscript.parser.WPos attrErrorPos();
    /** */
    public abstract WurstModel getModel();
    /** */
    public abstract void addError(String msg);
    /** */
    public abstract void addWarning(String msg);
    /** */
    public abstract de.peeeq.wurstscript.attributes.ErrorHandler getErrorHandler();
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable TypeDef lookupType(String name, boolean showErrors);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.PackageLink lookupPackage(String name, boolean showErrors);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.NameLink lookupVar(String name, boolean showErrors);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.NameLink lookupVarNoConfig(String name, boolean showErrors);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.NameLink lookupMemberVar(de.peeeq.wurstscript.types.WurstType receiverType, String name, boolean showErrors);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<de.peeeq.wurstscript.attributes.names.FuncLink> lookupFuncs(String name, boolean showErrors);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<de.peeeq.wurstscript.attributes.names.FuncLink> lookupFuncsNoConfig(String name, boolean showErrors);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<de.peeeq.wurstscript.attributes.names.FuncLink> lookupMemberFuncs(de.peeeq.wurstscript.types.WurstType receiverType, String name, boolean showErrors);
    /** */
    public abstract @org.eclipse.jdt.annotation.Nullable TypeDef lookupType(String name);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.PackageLink lookupPackage(String name);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.NameLink lookupVar(String name);
    /** */
    public abstract de.peeeq.wurstscript.attributes.names.NameLink lookupMemberVar(de.peeeq.wurstscript.types.WurstType receiverType, String name);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<de.peeeq.wurstscript.attributes.names.FuncLink> lookupFuncs(String name);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<de.peeeq.wurstscript.attributes.names.FuncLink> lookupMemberFuncs(de.peeeq.wurstscript.types.WurstType receiverType, String name);
    /** */
    public abstract com.google.common.collect.ImmutableCollection<WPackage> attrUsedPackages();
    /** */
    public abstract String description();
    /** */
    public abstract String descriptionHtml();
    /** */
    public abstract boolean isSubtreeOf(Element other);
    /** */
    public abstract void prettyPrint(de.peeeq.wurstscript.attributes.prettyPrint.Spacer spacer, StringBuilder sb, int indent);
}