public void Run() { if (Reader == null || Writer == null) { throw new InvalidOperationException(); } // options _globalOptions = Options.New(); _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)); } } }