void Slice(SliceConfigurationFile sliceConfigurationFile)
        {
            SliceConfiguration sliceConfigurationToUse = new SliceConfiguration(sliceConfigurationFile.SliceConfiguration);

            var slicer = new Slicer(sliceConfigurationToUse, new VersionDependentDataCopier());

            string additionalDetails;

            try
            {
                additionalDetails = slicer.InitializeSlice(new CustomTreeDataHandler());
            }
            catch (System.Exception exception)
            {
                SliceException sliceException = exception as SliceException;
                if (sliceException != null)
                {
                    EditorUtility.DisplayDialog("Slicing Error", sliceException.ReasonSliceFailed, "OK");
                    return;
                }

                SliceCanceledException cancelException = exception as SliceCanceledException;
                if (cancelException != null)
                {
                    return;
                }

                throw exception;
            }

            if (additionalDetails != "")
            {
                Debug.Log(additionalDetails);
            }
        }