public RoutedClauseEventArgs(Clause clause)
        {
            if (clause == null)
            {
                throw new ArgumentNullException("clause");
            }

            Clause = clause;
        }
        public RoutedClauseEventArgs(Clause clause, RoutedEvent routedEvent, object source)
            : base(routedEvent, source)
        {
            if (clause == null)
            {
                throw new ArgumentNullException("clause");
            }

            Clause = clause;
        }
        public RoutedClauseEventArgs(Clause clause, RoutedEvent routedEvent)
            : base(routedEvent)
        {
            if (clause == null)
            {
                throw new ArgumentNullException("clause");
            }

            m_clause = clause;
        }
        internal PrologStackFrame(PrologStackFrameList container, int stackIndex)
        {
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }
            if (stackIndex < 0)
            {
                throw new ArgumentOutOfRangeException("stackIndex");
            }

            Container = container;
            StackIndex = stackIndex;

            _instructionStream = null;
            _variables = null;
            _clause = null;
        }
 void OnExplorerClauseChanged(Clause clause)
 {
     InstructionStream.Clear();
     if (clause == null) return;
     foreach (var item in clause.PrologInstructionStream) InstructionStream.Add(item);
 }