private IVariableFilter[] ConvertFilters(IVariableFilter[] filters) { //rewrite variable value filter to the domain of the source. IList <IVariableFilter> filterList = new List <IVariableFilter>(); foreach (var filter in filters) { //TODO: rewrite to IEnumerable etc if (filter is IVariableValueFilter && filter.Variable.Parent == variableToConvert) { var variableValueFilter = filter as IVariableValueFilter; IList values = new List <TSource>(); foreach (TTarget obj in variableValueFilter.Values) { values.Add(toSource(obj)); } filterList.Add(variableToConvert.CreateValuesFilter(values)); } else { filterList.Add(filter); } } return(filterList.ToArray()); }