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

public interface LuaTableField extends Element{
    void setVal(LuaExpr val);
    LuaExpr getVal();
    Element getParent();
    <T> T match(Matcher<T> s);
    void match(MatcherVoid s);
    public interface Matcher<T> {
        T case_LuaTableNamedField(LuaTableNamedField luaTableNamedField);
        T case_LuaTableExprField(LuaTableExprField luaTableExprField);
        T case_LuaTableSingleField(LuaTableSingleField luaTableSingleField);
    }

    public interface MatcherVoid {
        void case_LuaTableNamedField(LuaTableNamedField luaTableNamedField);
        void case_LuaTableExprField(LuaTableExprField luaTableExprField);
        void case_LuaTableSingleField(LuaTableSingleField luaTableSingleField);
    }

    LuaTableField copy();
    LuaTableField copyWithRefs();
    /** */
    public abstract void print(StringBuilder sb, int indent);
}