public static Entity <Singletons> AddGlobalComponentAddedListener <TScope, TComponent>(
     this Entity <Singletons> self,
     IComponentAddedListener <TScope, TComponent> listener)
 {
     self.Get <ComponentAddedListeners <TScope, TComponent> >().Listeners.Add(listener);
     return(self);
 }
 public static Entity <TScope> RemoveComponentAddedListener <TScope, TComponent>(
     this Entity <TScope> self,
     IComponentAddedListener <TScope, TComponent> listener)
 {
     self.Get <ComponentAddedListeners <TScope, TComponent> >().Listeners.Remove(listener);
     return(self);
 }
        public static Entity <TScope> AddComponentAddedListener <TScope, TComponent>(
            this Entity <TScope> self,
            IComponentAddedListener <TScope, TComponent> listener)
        {
            if (!self.Has <ComponentAddedListeners <TScope, TComponent> >())
            {
                var list = ListPool <IComponentAddedListener <TScope, TComponent> > .Instance.Get();

                self.Add(new ComponentAddedListeners <TScope, TComponent>(list));
            }

            self.Get <ComponentAddedListeners <TScope, TComponent> >().Listeners.Add(listener);
            return(self);
        }