private void DuplicateCurrentObject(string objectName)
        {
            // Get old references
            PlayableDirector oldPlayableDirector = _CurrentUTADirector.GetPlayableDirector();
            PlayableAsset    oldPlayableAsset    = oldPlayableDirector.playableAsset;

            // Duplicate asset
            PlayableAsset newPlayableAsset = ScriptableObjectUtility.DuplicateAsset(
                oldPlayableAsset,
                string.Concat(c_AnimationDirectory, objectName, ".playable")
                );

            // Duplicate game object
            GameObject cloneGameObject = GameObject.Instantiate(_CurrentUTADirector.gameObject);

            cloneGameObject.name = objectName;
            PlayableDirector newPlayableDirector = cloneGameObject.GetComponent <PlayableDirector>();

            newPlayableDirector.playableAsset = newPlayableAsset;

            // Duplicate bindings
            IEnumerator <PlayableBinding> oldBindings = oldPlayableAsset.outputs.GetEnumerator();
            IEnumerator <PlayableBinding> newBindings = newPlayableAsset.outputs.GetEnumerator();

            while (oldBindings.MoveNext())
            {
                var oldBindings_sourceObject = oldBindings.Current.sourceObject;

                newBindings.MoveNext();

                var newBindings_sourceObject = newBindings.Current.sourceObject;

                newPlayableDirector.SetGenericBinding(
                    newBindings_sourceObject,
                    oldPlayableDirector.GetGenericBinding(oldBindings_sourceObject)
                    );
            }

            // Reparent and select
            cloneGameObject.transform.SetParent(oldPlayableDirector.transform.parent);
            SelectCurrentObject(cloneGameObject.GetComponent <UTADirector>());
        }