/// <summary>
        /// Creates a new Variable of a specific type.
        /// </summary>
        /// <param name="name">
        /// The name of the Variable.
        /// </param>
        /// <param name="context">
        /// The context that this Variable will store data in.
        /// </param>
        public Variable(ValueType type, string name, ExecutionContext context)
            : base(type)
        {
            if (context.HasVariable(name)) {
                var msg = "Variable already instantiated";
                throw new InvalidOperationException(msg);
            }

            Name = name;
            m_context = context;
            m_context.Instantiate(this);
        }
 /// <summary>
 /// Creates a new Variable of any type.
 /// </summary>
 /// <param name="name">
 /// The name of the Variable.
 /// </param>
 /// <param name="context">
 /// The context that this Variable will store data in.
 /// </param>
 public Variable(string name, ExecutionContext context)
     : this(ValueType.ANY, name, context)
 {
 }