class_docstr: Heuristic agent. Always picks the smallest piece possible for cutting (by area).
  
  :param action_conversion: ActionConversionInterface.
class_docstr_tok: ["Heuristic","agent",".","Always","picks","the","smallest","piece","possible","for","cutting","(","by","area",")",".",":","param","action_conversion",":","ActionConversionInterface","."]
docstr: Whether the current_demand is smaller than piece, i.e. piece cut be cut to satisfy it.
docstr_tok: ["Whether","the","current_demand","is","smaller","than","piece",",","i.e",".","piece","cut","be","cut","to","satisfy","it","."]
code: def _demand_fits_piece(
      current_demand: (int, int), piece: (int, int)
  ) -> bool:
      """Whether the current_demand is smaller than piece, i.e. piece cut be cut to satisfy it."""
      return (
          current_demand[0] <= piece[0]
          and current_demand[1] <= piece[1]
      )
  
imports: from typing import Dict, Sequence, Tuple, Union, Optional
  import numpy
  from maze.core.agent.policy import Policy
  from maze.core.annotations import override
  from maze.core.env.action_conversion import ActionType
  from maze.core.env.base_env import BaseEnv
  from maze.core.env.maze_state import MazeStateType
  from maze.core.env.observation_conversion import ObservationType
  from maze.core.env.structured_env import ActorID
  from maze.core.utils.factory import Factory, ConfigType
  from maze_envs.logistics.cutting_2d.env.maze_action import Cutting2DMazeAction
  from maze_envs.logistics.cutting_2d.space_interfaces.action_conversion.base import BaseActionConversion
label_desc: Use image node_id 7 for calling the GreedyPolicy obj's underlying member method code with example usage: obj._demand_fits_piece(current_demand, piece) and returns: unknown