/// <summary>
        /// Tries the get filter.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="filter">The filter.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool TryGetFilter(IDynamicObject source, out ColumnFilter filter)
        {
            filter = null;

            var value = _valueCalculator.GetValue(source, _field.MappingKey);

            if (value == null || DateTime.MinValue.Equals(value))
                return false;

            filter = new ColumnFilter(_property.Name, value);

            return true;
        }
        /// <summary>
        /// Tries the get filter.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="filter">The filter.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public bool TryGetFilter(IDynamicObject source, out ColumnFilter filter)
        {
            filter = null;

            var filterList = new List<ColumnFilter>();

            foreach (var filterBuilder in _filterBuilders)
            {
                ColumnFilter subfilter;

                if (!filterBuilder.TryGetFilter(source, out subfilter))
                    return false;

                filterList.Add(subfilter);
            }

            var itemIds = RuntimeDatabase.FindItems(_referencedProcess, filterList);
            if (itemIds.Count <= 0)
                return false;

            filter = new ColumnFilter(_property.Name, itemIds[0]);

            return true;
        }