code: def add(storable, *coordinate)
        validate_type(storable)
        loc = create_location(coordinate)
        pos = storable.position || storable.position_class.new
        pos.location = loc
        pos.occupant = storable
        pos.holder = self
        logger.debug { "Added #{storable.qp} to #{qp} at #{loc.coordinate}." }
        update_full_flag
        self
      end
docs: Moves the given Storable from its current Position, if any, to this Container at the optional
   coordinate. The default coordinate is the first available slot within this Container.
   The storable Storable position is updated to reflect the new location. Returns self.
  
   @param [Storable] storable the item to add
   @param [CaRuby::Coordinate, <Integer>] coordinate the x-y coordinate to place the item
   @raise [IndexError] if this Container is full
   @raise [IndexError] if the row and column are given but exceed the Container bounds