Code/Core/Contexts/ExecutionContext/ExecutionContext.cs
namespace Nodebox;

public partial class ExecutionContext : Context, IMeta {
    public Graph Graph { get; set; }
    public Dictionary<string, object> Meta { get; private set; } = [];

    public ExecutionContext() {
        GenericArguments = GenerateAvailableTypes();
        Implementations = GenerateImplementations();
    }
    public ExecutionContext(Graph graph) : this() {
        Graph = graph;
    }

    public virtual void Call(PinRef pin) { // PinRef<Call>
        InvalidOperationException.ThrowIf(Graph == null, $"{nameof(Graph)} is not set");
        Assert.True(Graph.Contains<Node>(pin.Node), $"{nameof(ExecutionContext)} graph does't contain the {nameof(Nodebox.Call)} node, wtf");

        // ...
    }
}


public abstract class Call { }