/// <summary>
        ///     Merges an <see cref="Acl" /> into the entity's existing set of ACLs.
        /// </summary>
        public static void MergeAcl(this Worker.Entity entity, Acl newAcl)
        {
            if (entity.Get <EntityAcl>().HasValue)
            {
                entity.Update(Acl.MergeIntoAcl(entity.Get <EntityAcl>().Value.Get().Value, newAcl).ToUpdate());
                return;
            }

            entity.Add(newAcl.ToData());
        }
        /// <summary>
        ///     Adds an ACL component to an entity or overwrites an existing one.
        /// </summary>
        public static void SetAcl(this Worker.Entity entity, Acl acl)
        {
            if (entity.Get <EntityAcl>().HasValue)
            {
                entity.Update(acl.ToUpdate());
                return;
            }

            entity.Add(acl.ToData());
        }
 /// <inheritdoc cref="IPositionAdder.AddPositionComponent" />
 public IMetadataAdder AddPositionComponent(Vector3 position, WorkerRequirementSet writeAcl)
 {
     entity.Add(new Position.Data(position.ToSpatialCoordinates()));
     entityAcl.SetWriteAccess <Position>(writeAcl);
     return(this);
 }