code: public String[] plan(String aam, String uniqueOfferingsTosca) throws ParsingException, IOException {
  
          log.info("Planning for aam: \n" + aam);
  
          //Get offerings
          log.info("Getting Offeing Step: Start");
          Map<String, Pair<NodeTemplate, String>> offerings = parseOfferings(uniqueOfferingsTosca); // getOfferingsFromDiscoverer();
          log.info("Getting Offeing Step: Complete");
  
          log.info("\nNot deployable offering have been filtered!");
          log.info("\nDeployable offerings have location: " + deployableProviders);
  
          log.info("Got " + offerings.size() + " offerings from discoverer:");
  
          //Matchmake
          log.info("Matchmaking Step: Start");
          Matchmaker mm = new Matchmaker();
          Map<String, HashSet<String>> matchingOfferings = mm.match(ToscaSerializer.fromTOSCA(aam), offerings);
          log.info("Matchmaking Step: Complete");
          //Optimize
          String mmOutput = "";
          try {
              mmOutput = generateMMOutput2(matchingOfferings, offerings);
          }catch(JsonProcessingException e){
              log.error("Error preparing matchmaker output for optimization", e);
          }
  
          for(String s:matchingOfferings.keySet()){
              log.info("Module " + s + "has matching offerings: " + matchingOfferings.get(s));
          }
  
          log.info("Optimization Step: Start");
          log.info("Calling optimizer with suitable offerings: \n" + mmOutput);
          Optimizer optimizer = new Optimizer();
          String[] outputPlans = optimizer.optimize(aam, mmOutput);
          log.info("Optimzer result: " + Arrays.asList(outputPlans));
          log.info("Optimization Step: Complete");
  
          return outputPlans;
      }
docs: Makes plans starting from the AAM and a String containing the TOSCA of the
  offerings available to generate the plans
  
  @param aam the String representing the AAM
  @param uniqueOfferingsTosca the String containing the Tosca representation of the available offerings
  
  @return the generated plans
  @throws ParsingException
  @throws IOException