code: public void introspectFramework(String timestamp, Set<JavaDumpAction> javaDumpActions) {
          Tr.audit(tc, "info.introspect.request.received");
  
          File dumpDir = config.getOutputFile(BootstrapConstants.SERVER_DUMP_FOLDER_PREFIX + timestamp + "/");
          if (!dumpDir.exists()) {
              throw new IllegalStateException("dump directory does not exist.");
          }
  
          // generate java dumps if needed, and move them to the dump directory.
          if (javaDumpActions != null) {
              File javaDumpLocations = new File(dumpDir, BootstrapConstants.SERVER_DUMPED_FILE_LOCATIONS);
              dumpJava(javaDumpActions, javaDumpLocations);
          }
  
          IntrospectionContext introspectionCtx = new IntrospectionContext(systemBundleCtx, dumpDir);
          introspectionCtx.introspectAll();
  
          // create dumped flag file
          File dumpedFlag = new File(dumpDir, BootstrapConstants.SERVER_DUMPED_FLAG_FILE_NAME);
          try {
              dumpedFlag.createNewFile();
          } catch (IOException e) {
              Tr.warning(tc, "warn.unableWriteFile", dumpedFlag, e.getMessage());
          }
      }
docs: Introspect the framework
  Get all IntrospectableService from OSGi bundle context, and dump a running
  server status from them.
  
  @param timestamp
  Create a unique dump folder based on the time stamp string.
  @param javaDumpActions
  The java dumps to create, or null for the default set.