internal static ITranslationRule <TStoreObject, TEntity> MapTo <TStoreObject, TEntity, TValue>(this IStoragePropertyAccessor <TStoreObject, TValue> storageAccessor, EntityPropertyAccessor <TEntity, TValue> entityAccessor) where TEntity : IPropertyChangeTracker <Microsoft.Exchange.Entities.DataModel.PropertyBags.PropertyDefinition>
 {
     return(new PassThruPropertyTranslationRule <TStoreObject, TEntity, Microsoft.Exchange.Data.PropertyDefinition, TValue>(storageAccessor, entityAccessor));
 }
 internal static ITranslationRule <TStoreObject, TEntity> MapTo <TStoreObject, TEntity>(this IStoragePropertyAccessor <TStoreObject, ExDateTime> storageTimeAccessor, IStoragePropertyAccessor <TStoreObject, ExTimeZone> storageTimeZoneAccessor, EntityPropertyAccessor <TEntity, ExDateTime> entityTimeAccessor, EntityPropertyAccessor <TEntity, string> entityIntendedTimeZoneIdAccessor, DateTimeHelper dateTimeHelper) where TStoreObject : IStoreObject where TEntity : IPropertyChangeTracker <Microsoft.Exchange.Entities.DataModel.PropertyBags.PropertyDefinition>
 {
     return(new StorageTimeZoneSensitiveTimeTranslationRule <TStoreObject, TEntity>(storageTimeAccessor, storageTimeZoneAccessor, entityTimeAccessor, entityIntendedTimeZoneIdAccessor, dateTimeHelper));
 }
        internal static ITranslationRule <TStoreObject, TEntity> MapTo <TStoreObject, TEntity, TStorageValue, TEntityValue, TConverter>(this IStoragePropertyAccessor <TStoreObject, TStorageValue> storageAccessor, EntityPropertyAccessor <TEntity, TEntityValue> entityAccessor, TConverter converter) where TStoreObject : IStoreObject where TEntity : IPropertyChangeTracker <Microsoft.Exchange.Entities.DataModel.PropertyBags.PropertyDefinition>
        {
            IConverter <TStorageValue, TEntityValue> storageToEntityConverter = converter as IConverter <TStorageValue, TEntityValue>;
            IConverter <TEntityValue, TStorageValue> entityToStorageConverter = converter as IConverter <TEntityValue, TStorageValue>;

            return(storageAccessor.MapTo(entityAccessor, storageToEntityConverter, entityToStorageConverter));
        }