class_docstr: Environment for cutting 2D pieces based on the customer demand. Works as follows:
   - Keeps inventory of 2D pieces available for cutting and fulfilling the demand.
   - Produces a new demand for one piece in every step (here a static demand).
   - The agent should decide which piece from inventory to cut (and how) to fulfill the given demand.
   - What remains from the cut piece is put back in inventory.
   - All the time, one raw (full-size) piece is available in inventory.
     (If it gets cut, it is replenished in the next step.)
   - Rewards are calculated to motivate the agent to consume as few raw pieces as possible.
   - If inventory gets full, the oldest pieces get discarded.
  
  :param max_pieces_in_inventory: Size of the inventory.
  :param raw_piece_size: Size of a fresh raw (= full-size) piece.
  :param static_demand: Order to issue in each step.
code: def is_actor_done(self) -> bool:
      pass
  
imports: from typing import Union, Tuple, Dict, Any
  import numpy
  from maze.core.env.core_env import CoreEnv
  from maze.core.env.structured_env import ActorID
  from .maze_state import Cutting2DMazeState
  from .maze_action import Cutting2DMazeAction
  from .inventory import Inventory
  from .renderer import Cutting2DRenderer
label_desc: Use image node_id 10 for calling the Cutting2DCoreEnvironment obj's underlying member method code with example usage: obj.is_actor_done() without return types