Esempio n. 1
0
 public CloneSimulationPresenter(ICloneSimulationView view, ISubPresenterItemManager <ISimulationItemPresenter> subPresenterItemManager, ISimulationModelCreator simulationModelCreator,
                                 IHeavyWorkManager heavyWorkManager, ICloner cloner, IDialogCreator dialogCreator, IObjectBaseDTOFactory buildingBlockDTOFactory,
                                 ISimulationParametersUpdater simulationParametersUpdater, IFullPathDisplayResolver fullPathDisplayResolver, IBuildingBlockInSimulationSynchronizer buildingBlockInSimulationSynchronizer)
     : base(view, subPresenterItemManager, simulationModelCreator, heavyWorkManager, cloner, dialogCreator, simulationParametersUpdater, fullPathDisplayResolver, buildingBlockInSimulationSynchronizer, CreationMode.Clone)
 {
     _buildingBlockDTOFactory = buildingBlockDTOFactory;
 }
Esempio n. 2
0
 public Converter521To522(IDefaultIndividualRetriever defaultIndividualRetriever, ICloner cloner, IIndividualCalculationMethodsUpdater individualCalculationMethodsUpdater)
 {
     _defaultIndividualRetriever = defaultIndividualRetriever;
     _cloner = cloner;
     _individualCalculationMethodsUpdater = individualCalculationMethodsUpdater;
     _defaultCache = new Cache <Species, Individual>(x => x.Species, x => null);
 }
 protected SynchronousRepository(ICloner cloner)
 {
     Cloner = ArgumentNotNull(
         cloner,
         nameof(cloner),
         SynchronousRepositoryClonerRequired);
 }
Esempio n. 4
0
 protected override void Context()
 {
     _objectBaseFactory = A.Fake <IObjectBaseFactory>();
     _simulationBuildingBlockUpdater = A.Fake <ISimulationBuildingBlockUpdater>();
     _simulationModelCreator         = A.Fake <ISimulationModelCreator>();
     _simulationParametersUpdater    = A.Fake <ISimulationParametersUpdater>();
     _modelPropertiesTask            = A.Fake <IModelPropertiesTask>();
     _cloner = A.Fake <ICloner>();
     _diagramModelFactory = A.Fake <IDiagramModelFactory>();
     _interactionTask     = A.Fake <IInteractionTask>();
     _individual          = A.Fake <Individual>();
     _compounds           = new List <Compound>();
     A.CallTo(() => _individual.BuildingBlockType).Returns(PKSimBuildingBlockType.Individual);
     _population = A.Fake <Population>();
     A.CallTo(() => _population.BuildingBlockType).Returns(PKSimBuildingBlockType.Population);
     _originData                = new OriginData();
     _modelProperties           = A.Fake <ModelProperties>();
     _individualSimulation      = A.Fake <IndividualSimulation>();
     _populationSimulation      = A.Fake <PopulationSimulation>();
     _objectIdResetter          = A.Fake <IObjectIdResetter>();
     _compoundPropertiesUpdater = A.Fake <ICompoundPropertiesUpdater>();
     A.CallTo(() => _objectBaseFactory.Create <IndividualSimulation>()).Returns(_individualSimulation);
     A.CallTo(() => _objectBaseFactory.Create <PopulationSimulation>()).Returns(_populationSimulation);
     _individual.OriginData = _originData;
     A.CallTo(() => _individual.Organism).Returns(A.Fake <Organism>());
     sut = new SimulationFactory(_objectBaseFactory,
                                 _simulationBuildingBlockUpdater, _simulationModelCreator, _objectIdResetter, _compoundPropertiesUpdater, _simulationParametersUpdater,
                                 _modelPropertiesTask, _cloner, _diagramModelFactory, _interactionTask);
 }
        protected override Task Context()
        {
            _parameterMapper       = A.Fake <ParameterMapper>();
            _formulationRepository = A.Fake <IFormulationRepository>();
            _cloner = A.Fake <ICloner>();

            sut = new FormulationMapper(_parameterMapper, _formulationRepository, _cloner);

            _parameter1 = DomainHelperForSpecs.ConstantParameterWithValue(5, isDefault: false)
                          .WithName("Param1");

            _parameter2 = DomainHelperForSpecs.ConstantParameterWithValue(5, isDefault: true)
                          .WithName("Param2");

            _hiddenParameter = DomainHelperForSpecs.ConstantParameterWithValue(5, isDefault: false)
                               .WithName("Param3");
            _hiddenParameter.Visible = false;

            _formulation = new Formulation
            {
                Name            = "Form",
                FormulationType = "Weibul",
                Description     = "Amazing formulation"
            };

            _formulation.Add(_parameter1);
            _formulation.Add(_parameter2);
            _formulation.Add(_hiddenParameter);

            A.CallTo(() => _parameterMapper.MapToSnapshot(_parameter1)).Returns(new Parameter().WithName(_parameter1.Name));
            A.CallTo(() => _parameterMapper.MapToSnapshot(_parameter2)).Returns(new Parameter().WithName(_parameter2.Name));
            A.CallTo(() => _parameterMapper.MapToSnapshot(_hiddenParameter)).Returns(new Parameter().WithName(_hiddenParameter.Name));

            return(Task.FromResult(true));
        }
Esempio n. 6
0
        protected override void Context()
        {
            _view           = A.Fake <ITableParameterView>();
            _parameterTask  = A.Fake <IParameterTask>();
            _formulaFactory = A.Fake <IFormulaFactory>();
            _cloner         = A.Fake <ICloner>();
            _tableFormula   = new TableFormula {
                Id = "1"
            };
            _tableFormula.XDimension   = DomainHelperForSpecs.TimeDimensionForSpecs();
            _tableFormula.XDisplayUnit = _tableFormula.XDimension.BaseUnit;
            _tableFormula.Dimension    = DomainHelperForSpecs.LengthDimensionForSpecs();
            _tableFormula.YDisplayUnit = _tableFormula.Dimension.BaseUnit;
            _editedFormula             = new TableFormula {
                Id = "2"
            };
            _editedFormula.XDimension   = DomainHelperForSpecs.TimeDimensionForSpecs();
            _editedFormula.XDisplayUnit = _editedFormula.XDimension.BaseUnit;
            _editedFormula.Dimension    = DomainHelperForSpecs.LengthDimensionForSpecs();
            _editedFormula.YDisplayUnit = _editedFormula.Dimension.BaseUnit;

            A.CallTo(() => _cloner.Clone(_tableFormula)).Returns(_editedFormula);
            sut = new TableParametersForSpecs(_view, _parameterTask, _cloner, _formulaFactory);
            sut.InitializeWith(A.Fake <ICommandCollector>());
            _parameter = new PKSimParameter().WithFormula(_tableFormula);
        }
Esempio n. 7
0
        protected override Task Context()
        {
            _containerTask           = A.Fake <IContainerTask>();
            _progressManager         = A.Fake <IProgressManager>();
            _individualCacheImporter = A.Fake <IIndividualPropertiesCacheImporter>();
            _cloner                   = A.Fake <ICloner>();
            _objectBaseFactory        = A.Fake <IObjectBaseFactory>();
            _advancedParameterFactory = A.Fake <IAdvancedParameterFactory>();
            _createdPopulation        = A.Fake <ImportPopulation>();
            _individual               = new Individual();
            _cloneIndividual          = new Individual();

            A.CallTo(() => _cloner.Clone(_individual)).Returns(_cloneIndividual);
            A.CallTo(() => _objectBaseFactory.Create <ImportPopulation>()).Returns(_createdPopulation);
            A.CallTo(() => _createdPopulation.IndividualPropertiesCache).Returns(A.Fake <IndividualPropertiesCache>());
            sut = new ImportPopulationFactory(_objectBaseFactory, _progressManager, _individualCacheImporter, _cloner, _containerTask, _advancedParameterFactory);

            A.CallTo(() => _containerTask.CacheAllChildren <IParameter>(_cloneIndividual)).Returns(_allParameters);
            A.CallTo(() => _containerTask.CacheAllChildrenSatisfying(_cloneIndividual, A <Func <IParameter, bool> > ._)).Returns(_allCreateIndividualParameters);

            _popFile1 = A.Fake <IndividualPropertiesCache>();
            _popFile2 = A.Fake <IndividualPropertiesCache>();
            A.CallTo(() => _individualCacheImporter.ImportFrom(_file1, _allParameters, A <IImportLogger> ._)).Returns(_popFile1);
            A.CallTo(() => _individualCacheImporter.ImportFrom(_file2, _allParameters, A <IImportLogger> ._)).Returns(_popFile2);

            return(_completed);
        }
Esempio n. 8
0
 public Converter521To522(IDefaultIndividualRetriever defaultIndividualRetriever, ICloner cloner, IRenalAgingCalculationMethodUpdater renalAgingCalculationMethodUpdater)
 {
     _defaultIndividualRetriever = defaultIndividualRetriever;
     _cloner = cloner;
     _renalAgingCalculationMethodUpdater = renalAgingCalculationMethodUpdater;
     _defaultCache = new Cache <Species, Individual>(x => x.Species, x => null);
 }
        protected override void Context()
        {
            _cloneManager = A.Fake <ICloner>();
            _individualToPopulationSettingsMapper = A.Fake <IIndividualToPopulationSettingsMapper>();

            sut = new PopulationSettingsDTOMapper(_individualToPopulationSettingsMapper, _cloneManager);
        }
Esempio n. 10
0
 public RandomPopulationFactory(
     IObjectBaseFactory objectBaseFactory,
     IProgressManager progressManager,
     IIndividualModelTask individualModelTask,
     ICreateIndividualAlgorithm createIndividualAlgorithm,
     IIndividualToIndividualValuesMapper individualValuesMapper,
     IContainerTask containerTask,
     ICloner cloner,
     IDistributedParametersUpdater distributedParametersUpdater,
     IReportGenerator reportGenerator,
     IMoleculeParameterVariabilityCreator moleculeParameterVariabilityCreator,
     IMoleculeOntogenyVariabilityUpdater moleculeOntogenyVariabilityUpdater,
     IDiseaseStateImplementationFactory diseaseStateImplementationFactory)
 {
     _objectBaseFactory         = objectBaseFactory;
     _progressManager           = progressManager;
     _individualModelTask       = individualModelTask;
     _createIndividualAlgorithm = createIndividualAlgorithm;
     _individualValuesMapper    = individualValuesMapper;
     _containerTask             = containerTask;
     _cloner = cloner;
     _distributedParametersUpdater = distributedParametersUpdater;
     _reportGenerator = reportGenerator;
     _moleculeParameterVariabilityCreator = moleculeParameterVariabilityCreator;
     _moleculeOntogenyVariabilityUpdater  = moleculeOntogenyVariabilityUpdater;
     _diseaseStateImplementationFactory   = diseaseStateImplementationFactory;
 }
Esempio n. 11
0
        public HomeController(ICloner<string> serializingCloner)
        {
            this.myStringCloner = serializingCloner;

            var string1 = "Nijected Bitch!!";
            var string2 = myStringCloner.Clone(string1);
        }
Esempio n. 12
0
 public ExecutionContext(IPKSimProjectRetriever projectRetriever, IWithIdRepository withIdRepository,
                         ILazyLoadTask lazyLoadTask, IRegistrationTask registrationTask,
                         IEventPublisher eventPublisher, IObjectTypeResolver objectTypeResolver,
                         IBuildingBlockRetriever buildingBlockRetriever, ICompressedSerializationManager serializationManager,
                         IBuildingBlockVersionUpdater buildingBlockVersionUpdater, IProjectChangedNotifier projectChangedNotifier,
                         ICloner cloner, IContainer container,
                         IReportGenerator reportGenerator,
                         IFullPathDisplayResolver fullPathDisplayResolver,
                         IParameterChangeUpdater parameterChangeUpdater)
 {
     _projectRetriever            = projectRetriever;
     _withIdRepository            = withIdRepository;
     _lazyLoadTask                = lazyLoadTask;
     _registrationTask            = registrationTask;
     _eventPublisher              = eventPublisher;
     _objectTypeResolver          = objectTypeResolver;
     _buildingBlockRetriever      = buildingBlockRetriever;
     _serializationManager        = serializationManager;
     _buildingBlockVersionUpdater = buildingBlockVersionUpdater;
     _projectChangedNotifier      = projectChangedNotifier;
     CloneManager             = cloner;
     _container               = container;
     _reportGenerator         = reportGenerator;
     _fullPathDisplayResolver = fullPathDisplayResolver;
     _parameterChangeUpdater  = parameterChangeUpdater;
 }
 public static void CloneInto(this object original, ref object clone, ICloner fallbackCloner, bool tryPreserveInstances)
 {
     using (var context = CloningContext.New(fallbackCloner, tryPreserveInstances))
     {
         CloneInto(context, ref clone, original);
     }
 }
        protected override void Context()
        {
            _subPresenterManager = SubPresenterHelper.Create <IIndividualItemPresenter>();
            _view                                  = A.Fake <IScaleIndividualView>();
            _propertiesMapper                      = A.Fake <IBuildingBlockPropertiesMapper>();
            _workspace                             = A.Fake <IWorkspace>();
            _individualExpressionsUpdater          = A.Fake <IIndividualExpressionsUpdater>();
            _cloner                                = A.Fake <ICloner>();
            _sourceIndividual                      = A.Fake <Individual>();
            _cloneIndividual                       = A.Fake <Individual>();
            _scaledIndividual                      = A.Fake <Individual>();
            _objectBaseDTOFactory                  = A.Fake <IObjectBaseDTOFactory>();
            _settingPresenter                      = _subPresenterManager.CreateFake(ScaleIndividualItems.Settings);
            _parameterPresenter                    = _subPresenterManager.CreateFake(ScaleIndividualItems.Parameters);
            _scalingConfigurationPresenter         = _subPresenterManager.CreateFake(ScaleIndividualItems.Scaling);
            _moleculePresenter                     = _subPresenterManager.CreateFake(ScaleIndividualItems.Expressions);
            ScaleIndividualItems.Expressions.Index = 3;
            A.CallTo(() => _cloner.Clone(_sourceIndividual)).Returns(_cloneIndividual);
            _individualSettingsDTO = new IndividualSettingsDTO();

            _dialogCreator = A.Fake <IDialogCreator>();
            A.CallTo(() => _settingPresenter.Individual).Returns(_scaledIndividual);
            _scaleIndividualPropertiesDTO = new ObjectBaseDTO();
            A.CallTo(() => _objectBaseDTOFactory.CreateFor <Individual>()).Returns(_scaleIndividualPropertiesDTO);

            sut = new ScaleIndividualPresenter(_view, _subPresenterManager, _dialogCreator, _individualExpressionsUpdater,
                                               _objectBaseDTOFactory, _propertiesMapper, _cloner);
            sut.Initialize();
        }
Esempio n. 15
0
 public Converter740To80(
     ICompoundFactory compoundFactory,
     ICloner cloner)
 {
     _templateCompound = new Lazy <Compound>(compoundFactory.Create);
     _cloner           = cloner;
 }
Esempio n. 16
0
        public HomeController(ICloner <string> serializingCloner)
        {
            this.myStringCloner = serializingCloner;

            var string1 = "Nijected Bitch!!";
            var string2 = myStringCloner.Clone(string1);
        }
 public static object Clone(this object original, ICloner fallbackCloner, bool tryPreserveInstances)
 {
     using (var context = CloningContext.New(fallbackCloner, tryPreserveInstances))
     {
         return(Clone(context, original));
     }
 }
Esempio n. 18
0
        protected override void Context()
        {
            _projectRetriever            = A.Fake <IPKSimProjectRetriever>();
            _registrationTask            = A.Fake <IRegistrationTask>();
            _eventPublisher              = A.Fake <IEventPublisher>();
            _lazyLoadTask                = A.Fake <ILazyLoadTask>();
            _objectTypeResolver          = A.Fake <IObjectTypeResolver>();
            _buildingBlockRetriever      = A.Fake <IBuildingBlockRetriever>();
            _buildingBlockVersionUpdater = A.Fake <IBuildingBlockVersionUpdater>();
            _projectChangedNotifier      = A.Fake <IProjectChangedNotifier>();
            _withIdRepository            = A.Fake <IWithIdRepository>();
            _stringSerializer            = A.Fake <ICompressedSerializationManager>();
            _cloneManager                = A.Fake <ICloner>();
            _reportGenerator             = A.Fake <IReportGenerator>();
            _fullPathDisplayResolver     = A.Fake <IFullPathDisplayResolver>();
            _project                = A.Fake <IPKSimProject>();
            _idThatDoesNotExist     = "tralalalal";
            _parameter              = A.Fake <IParameter>();
            _parameterChangeUpdater = A.Fake <IParameterChangeUpdater>();
            A.CallTo(() => _projectRetriever.CurrentProject).Returns(_project);
            _idThatDoesExist = "toto";
            _container       = A.Fake <IContainer>();
            A.CallTo(() => _withIdRepository.ContainsObjectWithId(_idThatDoesExist)).Returns(true);
            A.CallTo(() => _withIdRepository.Get <IParameter>(_idThatDoesExist)).Returns(_parameter);
            A.CallTo(() => _withIdRepository.Get(_idThatDoesExist)).Returns(_parameter);
            A.CallTo(() => _withIdRepository.ContainsObjectWithId(_idThatDoesNotExist)).Returns(false);
            A.CallTo(() => _withIdRepository.Get(_idThatDoesNotExist)).Throws(new Exception());

            sut = new ExecutionContext(_projectRetriever, _withIdRepository, _lazyLoadTask, _registrationTask,
                                       _eventPublisher, _objectTypeResolver, _buildingBlockRetriever,
                                       _stringSerializer, _buildingBlockVersionUpdater, _projectChangedNotifier,
                                       _cloneManager, _container, _reportGenerator, _fullPathDisplayResolver, _parameterChangeUpdater);
        }
Esempio n. 19
0
        protected override void Context()
        {
            _view = A.Fake <IConfigureSimulationView>();
            _subPresenterManager    = SubPresenterHelper.Create <ISimulationItemPresenter>();
            _simulationModelCreator = A.Fake <ISimulationModelCreator>();
            _heavyWorkManager       = new HeavyWorkManagerForSpecs();
            _cloner        = A.Fake <ICloner>();
            _dialogCreator = A.Fake <IDialogCreator>();
            _simulationParametersUpdater           = A.Fake <ISimulationParametersUpdater>();
            _fullPathDisplayResolver               = A.Fake <IFullPathDisplayResolver>();
            _buildingBlockInSimulationSynchronizer = A.Fake <IBuildingBlockInSimulationSynchronizer>();
            _validationResult = new ValidationResult();

            _simulationModelConfigurationPresenter = _subPresenterManager.CreateFake(SimulationItems.Model);
            _simulationCompoundsPresenter          = _subPresenterManager.CreateFake(SimulationItems.Compounds);
            _simulationCompoundProtocolsPresenter  = _subPresenterManager.CreateFake(SimulationItems.CompoundProtocols);
            _simulationCompoundProcessesPresenter  = _subPresenterManager.CreateFake(SimulationItems.CompoundsProcesses);
            _simulationEventsPresenter             = _subPresenterManager.CreateFake(SimulationItems.Events);

            sut = new ConfigureSimulationPresenter(_view, _subPresenterManager, _simulationModelCreator, _heavyWorkManager, _cloner, _dialogCreator, _simulationParametersUpdater, _fullPathDisplayResolver, _buildingBlockInSimulationSynchronizer);

            _originalSimulation = A.Fake <Simulation>();
            _clonedSimulation   = A.Fake <Simulation>();
            A.CallTo(() => _cloner.CloneForModel(_originalSimulation)).Returns(_clonedSimulation);
            A.CallTo(() => _simulationModelConfigurationPresenter.Simulation).Returns(_clonedSimulation);

            A.CallTo(_simulationParametersUpdater).WithReturnType <ValidationResult>().Returns(_validationResult);
        }
Esempio n. 20
0
 public SchemaItemFactory(IObjectBaseFactory objectBaseFactory, ISchemaItemParameterRetriever schemaItemParameterRetriever,
                          IContainerTask containerTask, ICloner cloner)
 {
     _objectBaseFactory            = objectBaseFactory;
     _schemaItemParameterRetriever = schemaItemParameterRetriever;
     _containerTask = containerTask;
     _cloner        = cloner;
 }
Esempio n. 21
0
 public Converter710To720(IDefaultIndividualRetriever defaultIndividualRetriever, ICloner cloner, IEntityPathResolver entityPathResolver, IOrganTypeRepository organTypeRepository, IIndividualCalculationMethodsUpdater individualCalculationMethodsUpdater)
 {
     _defaultIndividualRetriever = defaultIndividualRetriever;
     _cloner              = cloner;
     _entityPathResolver  = entityPathResolver;
     _organTypeRepository = organTypeRepository;
     _individualCalculationMethodsUpdater = individualCalculationMethodsUpdater;
 }
Esempio n. 22
0
        public static CloningContext New(ICloner fallbackCloner, bool tryPreserveInstances)
        {
            var context = GenericPool <CloningContext> .New(() => new CloningContext());

            context.fallbackCloner       = fallbackCloner;
            context.tryPreserveInstances = tryPreserveInstances;
            return(context);
        }
Esempio n. 23
0
 public WorkflowPublisher(IWorkflowDefinitionStore workflowDefinitionStore, IWorkflowInstanceStore workflowInstanceStore, IIdGenerator idGenerator, ICloner cloner, IMediator mediator)
 {
     _workflowDefinitionStore = workflowDefinitionStore;
     _workflowInstanceStore   = workflowInstanceStore;
     _idGenerator             = idGenerator;
     _cloner   = cloner;
     _mediator = mediator;
 }
 public ParameterAlternativeFactory(IObjectBaseFactory objectBaseFactory, ICloner cloner,
                                    ISpeciesRepository speciesRepository, ICoreUserSettings userSettings)
 {
     _objectBaseFactory = objectBaseFactory;
     _cloner            = cloner;
     _speciesRepository = speciesRepository;
     _userSettings      = userSettings;
 }
Esempio n. 25
0
 public TransactNeedle(T value, ICloner <T> cloner, IEqualityComparer <T> comparer)
     : base(value)
 {
     _cloner     = cloner ?? throw new ArgumentNullException(nameof(cloner));
     _comparer   = comparer ?? EqualityComparer <T> .Default;
     _needleLock = new NeedleLock <Thread>(Transact.Context);
     _id         = RuntimeUniqueIdProvider.GetNextId();
 }
        protected override void Context()
        {
            _cloner = A.Fake <ICloner>();
            _buildingBlockInSimulationManager = A.Fake <IBuildingBlockInSimulationManager>();
            _compoundPropertiesUpdater        = A.Fake <ICompoundPropertiesUpdater>();

            sut = new BuildingBlockInSimulationSynchronizer(_buildingBlockInSimulationManager, _cloner, _compoundPropertiesUpdater);
        }
 public static void CloneInto(this object original, ref object clone, ICloner fallbackCloner, bool tryPreserveInstances, out Dictionary <object, object> clones)
 {
     using (var context = CloningContext.New(fallbackCloner, tryPreserveInstances))
     {
         CloneInto(context, ref clone, original);
         clones = new Dictionary <object, object>(context.clones);
     }
 }
Esempio n. 28
0
 protected override void Context()
 {
     _cloneManager = A.Fake <ICloner>();
     _simulationActiveProcessRepository = A.Fake <ISimulationActiveProcessRepository>();
     _parameterSetUpdater    = A.Fake <IParameterSetUpdater>();
     _objectBaseFactory      = A.Fake <IObjectBaseFactory>();
     _parameterContainerTask = A.Fake <IParameterContainerTask>();
     sut = new ProcessToProcessBuilderMapper(_cloneManager, _simulationActiveProcessRepository, _parameterSetUpdater, _objectBaseFactory, _parameterContainerTask);
 }
Esempio n. 29
0
 protected TableParameterPresenter(TView view, IParameterTask parameterTask, IFormulaFactory formulaFactory, ICloner cloner, Func <TableFormula> importTableFormula)
     : base(view)
 {
     _parameterTask              = parameterTask;
     _formulaFactory             = formulaFactory;
     _cloner                     = cloner;
     _importTableFormula         = importTableFormula;
     ConfigureCreatedTableAction = t => { };
 }
Esempio n. 30
0
 protected override void Context()
 {
     _objectBaseFactory            = A.Fake <IObjectBaseFactory>();
     _schemaItemParameterRetriever = A.Fake <ISchemaItemParameterRetriever>();
     _containerTask = A.Fake <IContainerTask>();
     _cloner        = A.Fake <ICloner>();
     sut            = new SchemaItemFactory(_objectBaseFactory, _schemaItemParameterRetriever, _containerTask, _cloner);
     A.CallTo(() => _objectBaseFactory.Create <SchemaItem>()).Returns(new SchemaItem());
 }
 public static object Clone(this object original, ICloner fallbackCloner, bool tryPreserveInstances, out Dictionary <object, object> clones)
 {
     using (var context = CloningContext.New(fallbackCloner, tryPreserveInstances))
     {
         var clone = Clone(context, original);
         clones = new Dictionary <object, object>(context.clones);
         return(clone);
     }
 }