code: def add(storable, *coordinate)
        return add_local(storable, *coordinate) unless coordinate.empty?
        add_to_existing_container(storable) or add_to_new_subcontainer(storable) or out_of_bounds(storable)
        self
      end
docs: Adds the given storable to this container. If the storable has a current position, then
   the storable is moved from that position to this container. The new position is given
   by the given coordinate, if given to this method.
  
   The default coordinate is the first available slot within this Container.
   If this container cannot hold the storable type, then the storable is added to a
   subcontainer which can hold the storable type.
  
   @example
     rack << box #=> places the tissue box on the rack
     freezer << box #=> places the tissue box on a rack in the freezer
     freezer << specimen #=> places the specimen in the first available box in the freezer
  
   @param [Storable] the item to add
   @param [Coordinate, <Integer>] the storage location (default is first available location)
   @return [StorageContainer] self
   @raise [IndexError] if this Container is full
   @raise [IndexError] if the row and column are given but exceed the Container bounds