code: protected static Properties populatePropertiesWithDefaults(File basedir, Properties instructions,
                                                                 ProjectScanner scanner) throws IOException {
          Properties defaultInstructions = new Properties();
  
          List<String> privates = new ArrayList<>();
          List<String> exports = new ArrayList<>();
  
          // Do local resources
          String resources = getLocalResources(basedir, false, scanner);
          if (!resources.isEmpty()) {
              defaultInstructions.put(Analyzer.INCLUDE_RESOURCE, resources);
          }
  
          defaultInstructions.put(Constants.IMPORT_PACKAGE, "*");
  
          for (String s : scanner.getPackagesFromMainSources()) {
              if (Packages.shouldBeExported(s)) {
                  exports.add(s);
              } else {
                  if (!s.isEmpty() && !s.equals(".")) {
                      privates.add(s + ";-split-package:=merge-first");
                  }
              }
          }
  
          defaultInstructions.put(Constants.PRIVATE_PACKAGE, Packages.toClause(privates));
          defaultInstructions.put(Constants.EXPORT_PACKAGE, Packages.toClause(exports));
  
          return Instructions.mergeAndSkipExisting(instructions, defaultInstructions);
      }
docs: Populates the given properties object with our BND default instructions (computed for the current project).
  Entries are not added if the given properties file already contains these values.
  
  @param basedir      the project's base directory
  @param instructions the current set of properties in which the read metadata are written
  @param scanner      the project scanner to retrieve information about the sources and resources contained in the
  project
  @return the final set of instructions (containing the default instructions merged into the
  given set of properties)
  @throws IOException if something wrong happens