          self._recycled["images"].extend(images)
          self._recycled["meshes"].extend(meshes)
          logger.trace("Recycled objects: %s", self._recycled)
  
          self._images = []
          self._meshes = []
  
      def _add_rows(self, existing_rows, required_rows):
          """ Add rows to the viewport.
  
          Parameters
 
</s> remove         logger.debug("existing rows: %s, required_rows: %s, base_coords: %s",
 </s> add         logger.trace("existing rows: %s, required_rows: %s, base_coords: %s", </s> remove         logger.debug("self._images: %s, self._meshes: %s", self._images.shape, self._meshes.shape)
 </s> add         logger.trace("self._images: %s, self._meshes: %s", self._images.shape, self._meshes.shape)
    def _remove_rows(self, existing_rows, required_rows):
        """ Remove and recycle rows from the viewport that are not in the view area.

        Parameters
        ----------
        existing_rows: int
            The number of existing rows within the viewport
        required_rows: int
            The number of rows required by the viewport
        """
        logger.debug("Removing rows from viewport: (existing_rows: %s, required_rows: %s)",
                     existing_rows, required_rows)
        self._recycle_objects(self._images[required_rows: existing_rows].flatten().tolist(),
                              self._meshes[required_rows: existing_rows].flatten().tolist())
        self._images = self._images[:required_rows]
        self._meshes = self._meshes[:required_rows]
        logger.trace("self._images: %s, self._meshes: %s",
                     self._images.shape, self._meshes.shape)
          self._recycled["images"].extend(images)
          self._recycled["meshes"].extend(meshes)
          logger.trace("Recycled objects: %s", self._recycled)
  
    def _remove_rows(self, existing_rows, required_rows):
        """ Remove and recycle rows from the viewport that are not in the view area.

        Parameters
        ----------
        existing_rows: int
            The number of existing rows within the viewport
        required_rows: int
            The number of rows required by the viewport
        """
        logger.debug("Removing rows from viewport: (existing_rows: %s, required_rows: %s)",
                     existing_rows, required_rows)
        self._recycle_objects(self._images[required_rows: existing_rows].flatten().tolist(),
                              self._meshes[required_rows: existing_rows].flatten().tolist())
        self._images = self._images[:required_rows]
        self._meshes = self._meshes[:required_rows]
        logger.trace("self._images: %s, self._meshes: %s",
                     self._images.shape, self._meshes.shape)
    def _remove_rows(self, existing_rows, required_rows):
        """ Remove and recycle rows from the viewport that are not in the view area.

        Parameters
        ----------
        existing_rows: int
            The number of existing rows within the viewport
        required_rows: int
            The number of rows required by the viewport
        """
        logger.debug("Removing rows from viewport: (existing_rows: %s, required_rows: %s)",
                     existing_rows, required_rows)
        self._recycle_objects(self._images[required_rows: existing_rows].flatten().tolist(),
                              self._meshes[required_rows: existing_rows].flatten().tolist())
        self._images = self._images[:required_rows]
        self._meshes = self._meshes[:required_rows]
        logger.trace("self._images: %s, self._meshes: %s",
                     self._images.shape, self._meshes.shape)
  
      def _add_rows(self, existing_rows, required_rows):
          """ Add rows to the viewport.
  
          Parameters
keep keep keep keep replace replace keep keep keep keep keep
 Bugfix - Manual Tool
  - Fix non-appearing landmark annotations in face viewer 
tools/manual/faceviewer/viewport.py