code: static void runTransformedLearner() {
  
          // construct a (regular) simulator membership query oracle
          MealyMembershipOracle<Integer, OutputAndLocalInputs<Integer, Character>> mqOracle =
                  new StateLocalInputSULOracle<>(SUL);
  
          // construct L* instance
          ExtensibleLStarMealy<Integer, OutputAndLocalInputs<Integer, Character>> lstar =
                  new ExtensibleLStarMealyBuilder<Integer, OutputAndLocalInputs<Integer, Character>>().withAlphabet(INPUTS)
                                                                                                      .withOracle(mqOracle)
                                                                                                      .withCexHandler(
                                                                                                              ObservationTableCEXHandlers.RIVEST_SCHAPIRE)
                                                                                                      .create();
  
          // here, we simply use an equivalence check for the transformed automaton model
          MealyEquivalenceOracle<Integer, OutputAndLocalInputs<Integer, Character>> eqOracle =
                  new MealySimulatorEQOracle<>(TRANSFORMED_TARGET);
  
          // construct the experiment
          MealyExperiment<Integer, OutputAndLocalInputs<Integer, Character>> experiment =
                  new MealyExperiment<>(lstar, eqOracle, INPUTS);
  
          // run experiment
          experiment.run();
  
          // get learned model
          MealyMachine<?, Integer, ?, OutputAndLocalInputs<Integer, Character>> result = experiment.getFinalHypothesis();
  
          // report results
          System.out.println("-------------------------------------------------------");
  
          System.out.println("States: " + result.size());
          System.out.println("Sigma: " + INPUTS.size());
  
          System.out.println("-------------------------------------------------------");
  
          System.out.println("Final observation table:");
          new ObservationTableASCIIWriter<>().write(lstar.getObservationTable(), System.out);
      }
docs: Uses the raw {@link StateLocalInputSUL} to infer a complete partial {@link MealyMachine} as in classical automata
  learning. Note: here the {@link MealyMembershipOracle} needs to take care of mapping potentially undefined inputs
  of the system under learning to processable outputs for the learner.