public void Run() { if (_reader == null || _writer == null) { throw new InvalidOperationException(); } // options _globalOptions = Options.CreateDefault(); _options = _globalOptions; ProcessOptions(); // parse while (_reader.Read()) { Node(); } // validate links foreach (var link in _links) { if (!_topics.Contains(link)) { throw new InvalidDataException(string.Format(ErrMissingTarget, link)); } } }