public final function contractToMaxSize( Size $maxsize, bool $internal = true )
      : IImage
   {

      if ( $maxsize->getWidth()  >= $this->size->getWidth() &&
           $maxsize->getHeight() >= $this->size->getHeight() )
      {
         return $this->returnSelf( $internal );
      }

      $newSize = new Size( $this->size->getWidth(), $this->size->getHeight() );
      $newSize->reduceToMaxSize( $maxsize );

      return $this->createImageAfterResize( $newSize, $internal );

   }