code: def _register_babi_problems():
    
    for (subset, subset_suffix) in [("en", "_1k"), ("en-10k", "_10k")]:
      for problem_name, babi_task_id in six.iteritems(_problems_to_register()):
        problem_class = type("BabiQaConcat" + problem_name + subset_suffix,
                             (BabiQaConcat,), {
                                 "babi_task_id": babi_task_id,
                                 "babi_subset": subset
                             })
        registry.register_problem(problem_class)
        REGISTERED_PROBLEMS.append(problem_class.name)
docs: It dynamically instantiates a class for each babi subsets-tasks.
  
     @registry.register_problem
     class BabiQaConcatAllTasks_10k(EditSequenceRegexProblem):
       @property
       def babi_task_id(self):
         return "qa0"
       @property
       def babi_subset(self):
        return "en-10k"
  
    It does not put the classes into the global namespace, so to access the class
    we rely on the registry or this module"s REGISTERED_PROBLEMS list.
    It will be available as
  
       registry.problem("babi_qa_concat_all_tasks_10k")
  
    i.e., change camel case to snake case. Numbers are considered lower case
    characters for these purposes.