protected override bool MoveNextCore() { // Iterate sub cursor or move to the next file. while (_subCursor == null || !_subCursor.MoveNext()) { // Cleanup old sub cursor if (_subCursor != null) { _subCursor.Dispose(); _subCursor = null; } if (!TryGetNextPathAndValues(out string path, out string relativePath, out List <string> values)) { return(false); } IDataLoader loader = null; try { // Load the sub cursor and reset the data. loader = _parent.CreateLoaderFromBytes(_parent._subLoaderBytes, new MultiFileSource(path)); } catch (Exception e) { Ch.Warning($"Failed to load file {path} due to a loader exception. Moving on to the next file. Ex: {e.Message}"); continue; } _subCursor = loader.GetRowCursor(col => _subActive[col]); try { UpdateSubGetters(); UpdateColumnValues(relativePath, values); } catch (InvalidOperationException e) { // Failed to load this file so skip. Ch.Warning(MessageSensitivity.Schema, e.Message); if (_subCursor != null) { _subCursor.Dispose(); _subCursor = null; } } } return(true); }