package space.ai.component; import java.util.ArrayList; public abstract class Component { public final ExecutionStack execution = new ExecutionStack(); public static abstract class Value<T> { public abstract T value(); public void clear() { }; } public static class ExecutionStack { private ArrayList<Execution> _e = new ArrayList<>(); public boolean add(Execution e) { e.setStack(this); return _e.add(e); } public boolean remove(Execution e) { return _e.remove(e); } public void execute() { for(Execution e : _e) { e.execute(); } } } public static abstract class Execution { private ExecutionStack _es; private void setStack(ExecutionStack es) { _es = es; } public void remove() { _es.remove(this); } public abstract void execute(); } }