code: private JsonObject buildJSONReport() {
          logger.entering();
  
          Gson gson = new GsonBuilder().setPrettyPrinting().create();
  
          JsonArray testObjects = loadJSONArray(jsonCompletedTest);
  
          for (TestMethodInfo temp : completedTest) {
              testObjects.add(gson.fromJson(temp.toJson(), JsonElement.class));
          }
  
          for (TestMethodInfo temp : runningTest) {
              testObjects.add(gson.fromJson(temp.toJson(), JsonElement.class));
          }
  
          JsonArray configObjects = loadJSONArray(jsonCompletedConfig);
          for (ConfigMethodInfo temp : runningConfig) {
              configObjects.add(gson.fromJson(temp.toJson(), JsonElement.class));
          }
  
          JsonObject summary = new JsonObject();
          summary.add("testMethodsSummary", getReportSummaryCounts(testObjects));
          summary.add("configurationMethodsSummary", getReportSummaryCounts(configObjects));
  
          JsonElement reportMetadata = gson.fromJson(ReporterConfigMetadata.toJsonAsString(), JsonElement.class);
  
          JsonObject reporter = new JsonObject();
          reporter.add("reportSummary", summary);
          reporter.add("testMethods", testObjects);
          reporter.add("configurationMethods", configObjects);
          reporter.add("configSummary", generateConfigSummary());
          reporter.add("localConfigSummary", testJsonLocalConfigSummary);
          reporter.add("reporterMetadata", reportMetadata);
  
          logger.exiting(reporter);
  
          return reporter;
      }
docs: Construct the JSON report for report generation
  
  @return A {@link JsonObject} which represents the report.