public StatementExecutor(List <VariableInfo> variables, MathStatement statement, ITcpCommunicator communicator, ILocalVariables localVariables)
        {
            IsRunning      = false;
            _cancel        = false;
            _nan           = false;
            Communicator   = communicator;
            LocalVariables = localVariables;

            _localAssignees  = new List <string>();
            _localVariables  = new List <string>();
            _remoteAssignees = new Dictionary2D <IPAddress, string>();
            _remoteVariables = new Dictionary2D <IPAddress, string>();
            _ms = statement;

            foreach (var v in variables)
            {
                if (v.IsAssignee)
                {
                    if (v.IsRemote)
                    {
                        _remoteAssignees.Add(v.Ip, v.LocalName);
                    }
                    else
                    {
                        _localAssignees.Add(v.LocalName);
                    }
                }
                else if (v.IsRemote)
                {
                    _remoteVariables.Add(v.Ip, v.LocalName);
                }
                else
                {
                    _localVariables.Add(v.LocalName);
                }
            }
        }
 public StatementExecutor(List <VariableInfo> variables, MathStatement statement) : this(variables, statement, null, null)
 {
 }