docs: public Map<String, String> decompose(Frontier frontier, String modelText) {
          if (!(frontier instanceof SCXMLFrontier)) {
              return null;
          }
  
          TransitionTarget target = ((SCXMLFrontier) frontier).getRoot().nextState;
          Map<String, String> variables = ((SCXMLFrontier) frontier).getRoot().variables;
  
          Map<String, String> decomposition = new HashMap<String, String>();
          decomposition.put("target", target.getId());
  
          StringBuilder packedVariables = new StringBuilder();
          for (Map.Entry<String, String> variable : variables.entrySet()) {
              packedVariables.append(variable.getKey());
              packedVariables.append("::");
              packedVariables.append(variable.getValue());
              packedVariables.append(";");
          }
  
          decomposition.put("variables", packedVariables.toString());
          decomposition.put("model", modelText);
  
          return decomposition;
      }