Some things.  The _generate_subtasks method actually returned a list of subtasks, as well as the list of subtask_ids.  The latter is now handled by create_subtask_ids() above.  And the actual creation and queuing of the task is done in the caller.  But the logic is otherwise the same.  It's been moved here so it could be used when writing other tasks that might use subtasks in future.