/// <summary>
        /// Maps a property to another class map.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="expression">The expression.</param>
        /// <returns>The reference mapping for the property</returns>
        protected virtual CsvPropertyReferenceMap References(Type type, Expression <Func <T, object> > expression)
        {
            var property  = ReflectionHelper.GetProperty(expression);
            var reference = new CsvPropertyReferenceMap(type, property);

            ReferenceMaps.Add(reference);
            return(reference);
        }
        /// <summary>
        /// Maps a property to another class map.
        /// </summary>
        /// <typeparam name="TClassMap">The type of the class map.</typeparam>
        /// <param name="expression">The expression.</param>
        /// <returns>The reference mapping for the property.</returns>
        protected virtual CsvPropertyReferenceMap <TClassMap> References <TClassMap>(Expression <Func <T, object> > expression) where TClassMap : CsvClassMap
        {
            var property  = ReflectionHelper.GetProperty(expression);
            var reference = new CsvPropertyReferenceMap <TClassMap>(property);

            ReferenceMaps.Add(reference);
            return(reference);
        }