using System.Collections;
using PkmnLib.Static.Utils;
namespace PkmnLib.Dynamic.ScriptHandling;
///
/// A script set is a collection of scripts that can be accessed by a key.
/// We can add, remove, and clear scripts from the set.
/// This is generally used for volatile scripts.
///
public interface IScriptSet : IEnumerable
{
///
/// Adds a script to the set. If the script with that name already exists in this set, this
/// makes that script stack instead. The return value here is that script.
///
ScriptContainer Add(Script script);
///
/// Adds a script with a name to the set. If the script with that name already exists in this
/// set, this makes that script stack instead. The return value here is that script.
///
ScriptContainer? StackOrAdd(StringKey scriptKey, Func