public Movement Clone()
        {
            Movement clonedMovement = new MovementImpl(this.Name);

            clonedMovement.HasGravity = this.HasGravity;
            clonedMovement.MovementMembers.Clear();
            foreach (MovementMember member in this.MovementMembers)
            {
                MovementMember clonedMember = member.Clone();
                clonedMovement.MovementMembers.Add(clonedMember);
            }

            return(clonedMovement);
        }
        public Movement GetNewMovement()
        {
            MovableCharacter defaultCharacter  = this.Repository.CharacterByName[HeroVirtualTabletop.AnimatedAbility.DefaultAbilities.CHARACTERNAME] as MovableCharacter;
            string           validMovementName = GetNewValidMovementName(defaultCharacter);
            Movement         movement          = new MovementImpl(validMovementName);

            foreach (var member in movement.MovementMembers)
            {
                defaultCharacter.Abilities.AddNew(member.Ability);
                ReferenceResource refResource = new ReferenceResourceImpl {
                    Ability = member.Ability, Character = defaultCharacter
                };
                member.AbilityReference = refResource;
            }
            return(movement);
        }