code: public void stageArchive(AppYamlProjectStageConfiguration config) throws AppEngineException {
      Preconditions.checkNotNull(config);
      Path stagingDirectory = config.getStagingDirectory();
  
      if (!Files.exists(stagingDirectory)) {
        throw new AppEngineException(
            "Staging directory does not exist. Location: " + stagingDirectory);
      }
      if (!Files.isDirectory(stagingDirectory)) {
        throw new AppEngineException(
            "Staging location is not a directory. Location: " + stagingDirectory);
      }
  
      try {
        String env = findEnv(config);
        String runtime = findRuntime(config);
        if ("flex".equals(env)) {
          stageFlexibleArchive(config, runtime);
        } else if ("java11".equals(runtime)) {
          stageStandardArchive(config);
        } else {
          // I don't know how to deploy this
          throw new AppEngineException(
              "Cannot process application with runtime: "
                  + runtime
                  + (Strings.isNullOrEmpty(env) ? "" : " and env: " + env));
        }
      } catch (IOException ex) {
        throw new AppEngineException(ex);
      }
    }
docs: Stages an app.yaml based App Engine project for deployment. Copies app.yaml, the project
  artifact and any user defined extra files. Will also copy the Docker directory for flex
  projects.
  
  @param config Specifies artifacts and staging destination
  @throws AppEngineException When staging fails