void CustomBoxing(object e, object eMap)
        {
            //IList<Classifications>
            var classifiacationProp = eMap.GetType().GetProperty("Classifications");

            if (classifiacationProp != null && e is IClassifiable)
            {
                var nodes = _tree.GetClassifications(e as IClassifiable);
                classifiacationProp.SetValue(eMap, nodes.Select(n => n.Path).ToList(), null);
            }

            //Box<> - convert, don't persist
            var emapEntriesProp = eMap.GetType().GetProperty("Entries");

            if (emapEntriesProp != null && typeof(IBox).IsAssignableFrom(emapEntriesProp.PropertyType))
            {
                var eEntriesProp = e.GetType().GetProperty("Entries");
                if (eEntriesProp != null)
                {
                    var contverterType = typeof(NHibernateBoxConverter <,>)
                                         .MakeGenericType(
                        eEntriesProp.PropertyType.GetGenericArguments()[0],
                        emapEntriesProp.PropertyType.GetGenericArguments()[0]
                        );
                    var converter = Activator.CreateInstance(contverterType, _repoFinder);
                    var box       = contverterType.GetMethods().Where(m => m.Name == "ToBox").Skip(1).First()
                                    .Invoke(converter, new [] { eEntriesProp.GetValue(e, null) });
                    emapEntriesProp.SetValue(eMap, box, null);

                    //var transformerType = typeof(NHibernateBoxTransformation<,>)
                    //    .MakeGenericType(
                    //        emapEntriesProp.PropertyType.GetGenericArguments()[0],
                    //        eEntriesProp.PropertyType.GetGenericArguments()[0]);
                    //var transformer = Activator.CreateInstance(transformerType, _context, _repoFinder, _log, _tree, BoxImporterStrategy.RewriteExisting);
                    //transformerType.GetProperty("Entries").SetValue(transformer, eEntriesProp.GetValue(e, null), null);
                    //var box = transformerType.GetMethod("ToBox").Invoke(transformer, null) as IBox;
                    //emapEntriesProp.SetValue(eMap, box, null);
                }
            }

            //SettingsBoxMap
            var settingsProp = eMap.GetType().GetProperty("Settings");

            if (settingsProp != null && e.GetType().GetProperty("Settings") == null && e is IClassifiable)
            {
                var settings   = _repoFinder.SettingsService.GetFor(e as IClassifiable);
                var sConverter = CreateNestedTransformer <SettingsBoxMap, SettingsEntity>(BoxImporterStrategy.UpdateExisting);
                sConverter.Entries = new [] { settings };
                settingsProp.SetValue(eMap, sConverter.ToBox().First(), null);
            }

            //IBox<MetricsBoxMap>
            var metricsProp = eMap.GetType().GetProperty("Metrics");

            if (metricsProp != null && e.GetType().GetProperty("Metrics") == null && e is IClassifiable)
            {
                var metrics    = _repoFinder.MetricsService.GetFor(e as IClassifiable);
                var mConverter = CreateNestedTransformer <MetricsBoxMap, MetricsEntity>(BoxImporterStrategy.UpdateExisting);
                mConverter.Entries = metrics;
                metricsProp.SetValue(eMap, mConverter.ToBox(), null);
            }
        }