public bool CanUnlink(Field ExpressionInput)
        {
            if (Linked == ExpressionInput)
            {
                return true;
            }

            return false;
        }
        public bool Unlink(Field ExpressionInput)
        {
            if (Linked == ExpressionInput)
            {
                Linked = null;
                return true;
            }

            return false;
        }
        public bool Link(Field ExpressionInput)
        {
            if (Linked == null)
            {
                Linked = ExpressionInput;
                return true;
            }

            return false;
        }
        protected Field[] BuildFieldStore(Symbol[] Symbols)
        {
            Field[] fs = new Field[Symbols.Length];
            for (int i = 0; i < fs.Length; i++)
            {
                fs[i] = new Field();
                fs[i].Symbol = Symbols[i];
                fs[i].Owner = this;
            }

            return fs;
        }