diff --git a/assets/refactor-first-report.mustache b/assets/refactor-first-report.mustache
index 0b9c568..5fe33ab 100644
--- a/assets/refactor-first-report.mustache
+++ b/assets/refactor-first-report.mustache
@@ -458,7 +458,7 @@
Class relationships to remove, in priority order
- |
+ |
|
|
|
@@ -569,7 +569,7 @@
Package relationships to remove, in priority order
- |
+ |
|
|
|
@@ -805,7 +805,7 @@
{{#classCycles.largestCycle.breakdown}}
- | {{{className}}} |
+ {{{safeClassName}}} |
{{{edgesHtml}}} |
{{/classCycles.largestCycle.breakdown}}
diff --git a/lib/renderer.js b/lib/renderer.js
index 16b3c96..d2413bb 100644
--- a/lib/renderer.js
+++ b/lib/renderer.js
@@ -5,6 +5,7 @@
// sanitizes the final HTML.
import Mustache from 'mustache';
import DOMPurify from 'dompurify';
+import { sourceUrl } from './utils.js';
import {
TABLE_CONFIG,
REPORT_TABLES,
@@ -67,6 +68,157 @@ function sanitizeRelationshipLabel(label) {
});
}
+/**
+ * Escapes a value for safe interpolation into HTML text or a double-quoted
+ * attribute. Relationship fields (repoUrl, class paths, simple names) are
+ * untrusted report data, so they are escaped before the markup is built.
+ *
+ * @param {*} value - Raw value from the report JSON.
+ * @returns {string} HTML-escaped text.
+ */
+function escapeHtml(value) {
+ return String(value ?? '')
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+ .replace(/'/g, ''');
+}
+
+const RELATIONSHIP_ARROW = ' → ';
+
+/**
+ * Builds the two-anchor markup shared by class and package relationships:
+ * linked source name (plus removal marker), the → arrow, then the linked
+ * target name (plus removal marker). All values are untrusted report data and
+ * are escaped before the markup is assembled.
+ *
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @param {{path: *, name: *, marked: *}} source - Source path, name and marker.
+ * @param {{path: *, name: *, marked: *}} target - Target path, name and marker.
+ * @returns {string} The unsanitized relationship markup.
+ */
+function relationshipAnchorsMarkup(repoUrl, source, target) {
+ const anchor = (relationshipPath, name) =>
+ ''
+ + escapeHtml(name) + '';
+ return anchor(source.path, source.name)
+ + (source.marked ? '*' : '')
+ + RELATIONSHIP_ARROW
+ + anchor(target.path, target.name)
+ + (target.marked ? '*' : '');
+}
+
+/**
+ * Builds the raw markup of one class relationship from the structured
+ * ClassRelationshipDTO fields: the hyperlink targets are project.repoUrl plus
+ * sourceClassPath/targetClassPath (paths relative to the project root), the
+ * anchor texts are the simple class names, and the two anchors are separated
+ * by the → arrow. A class marked for removal is followed by *.
+ *
+ * Entries without the structured fields (pre-DTO strings, legacy entries
+ * carrying only a renderedLabel) yield null so callers can drop them.
+ *
+ * @param {*} relationship - Raw ClassRelationshipDTO entry.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {string|null} The unsanitized relationship markup, or null when the
+ * entry is not a structured ClassRelationshipDTO.
+ */
+export function classRelationshipMarkup(relationship, repoUrl) {
+ if (!relationship || typeof relationship !== 'object') return null;
+ const hasStructuredFields = relationship.simpleSourceClassName != null
+ || relationship.simpleTargetClassName != null;
+ if (!hasStructuredFields) return null;
+ return relationshipAnchorsMarkup(
+ repoUrl,
+ { path: relationship.sourceClassPath, name: relationship.simpleSourceClassName, marked: relationship.sourceMarked },
+ { path: relationship.targetClassPath, name: relationship.simpleTargetClassName, marked: relationship.targetMarked });
+}
+
+/**
+ * Builds the raw markup of one package relationship from the structured
+ * PackageRelationshipDTO fields: the hyperlink targets are project.repoUrl plus
+ * sourcePackagePath/targetPackagePath (package directories relative to the
+ * project root), and the anchor texts are the package names themselves. As with
+ * class relationships, the two anchors are separated by the → arrow and
+ * a package marked for removal is followed by *.
+ *
+ * @param {*} relationship - Raw PackageRelationshipDTO entry.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {string|null} The unsanitized relationship markup, or null when the
+ * entry is not a structured PackageRelationshipDTO.
+ */
+export function packageRelationshipMarkup(relationship, repoUrl) {
+ if (!relationship || typeof relationship !== 'object') return null;
+ const hasStructuredFields = relationship.sourcePackage != null
+ || relationship.targetPackage != null;
+ if (!hasStructuredFields) return null;
+ return relationshipAnchorsMarkup(
+ repoUrl,
+ { path: relationship.sourcePackagePath, name: relationship.sourcePackage, marked: relationship.sourceMarked },
+ { path: relationship.targetPackagePath, name: relationship.targetPackage, marked: relationship.targetMarked });
+}
+
+/**
+ * Builds the sanitized class-relationship label for template interpolation.
+ * The markup is derived from untrusted report data, so it is still
+ * restricted to links and markers before it reaches the template.
+ *
+ * @param {*} relationship - Raw ClassRelationshipDTO entry.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {string} Sanitized label markup ('' when the entry has no fields).
+ */
+function safeClassRelationshipLabel(relationship, repoUrl) {
+ registerLinkSafetyHook();
+ const markup = classRelationshipMarkup(relationship, repoUrl);
+ return markup == null ? '' : sanitizeRelationshipLabel(markup);
+}
+
+/**
+ * Builds the source-link markup for one disharmony table cell that carries a
+ * path relative to the project root: the hyperlink target is project.repoUrl
+ * plus the path, and the cell's existing text becomes the anchor text. The
+ * markup is sanitized down to a hardened link before it reaches the template;
+ * cells without a path are passed through untouched.
+ *
+ * @param {object} cell - Raw disharmony table cell.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {object} The cell, or a copy whose content is the sanitized link.
+ */
+function prepareDisharmonyCell(cell, repoUrl) {
+ if (!cell || typeof cell !== 'object' || cell.path == null) return cell;
+ registerLinkSafetyHook();
+ const markup = ''
+ + escapeHtml(cell.content) + '';
+ return { ...cell, content: sanitizeRelationshipLabel(markup) };
+}
+
+/**
+ * Builds the sanitized class-cell markup for one largest-cycle breakdown row
+ * from the structured CycleBreakdownRowDTO fields: the hyperlink target is
+ * project.repoUrl plus classPath, the anchor text is the simple class name,
+ * and a class marked for removal is followed by *. Rows without a path render
+ * as plain names (with the marker); the markup is sanitized to links and
+ * markers before it reaches the template.
+ *
+ * @param {object} row - Raw breakdown row.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {object} Row copy with a restricted safeClassName label.
+ */
+function prepareCycleBreakdownRow(row, repoUrl) {
+ if (!row || typeof row !== 'object') return row;
+ registerLinkSafetyHook();
+ let markup;
+ if (row.classPath != null) {
+ markup = ''
+ + escapeHtml(row.className) + '';
+ } else {
+ markup = escapeHtml(row.className);
+ }
+ if (row.marked) markup += '*';
+ return { ...row, safeClassName: sanitizeRelationshipLabel(markup) };
+}
+
/**
* Adapts one "class relationship to break a package cycle" entry for the
* template. Reports serialize structured ClassRelationshipDTO objects, and
@@ -75,30 +227,50 @@ function sanitizeRelationshipLabel(label) {
* of any other shape (including pre-DTO rendered-label strings) are dropped.
*
* @param {*} entry - Raw class-break entry.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
* @returns {string|null} Sanitized label markup, or null when the entry is
* not a valid ClassRelationshipDTO object.
*/
-function prepareClassBreakEntry(entry) {
+function prepareClassBreakEntry(entry, repoUrl) {
if (!entry || typeof entry !== 'object') return null;
- return sanitizeRelationshipLabel(entry.renderedLabel);
+ const markup = classRelationshipMarkup(entry, repoUrl);
+ return markup == null ? null : sanitizeRelationshipLabel(markup);
+}
+
+/**
+ * Copies a class relationship with its label markup built from repoUrl, the
+ * class paths and the simple class names, restricted to links and markers.
+ * Never trust a precomputed value from JSON.
+ *
+ * @param {object} relationship - Raw class relationship data.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
+ * @returns {object} Relationship with a restricted HTML label.
+ */
+function prepareClassRelationship(relationship, repoUrl) {
+ return {
+ ...relationship,
+ safeRenderedLabel: safeClassRelationshipLabel(relationship, repoUrl)
+ };
}
/**
- * Copies a relationship with label markup limited to source links and markers,
- * and normalizes its class-break entries the same way. Never trust a
- * precomputed value from JSON.
+ * Copies a package relationship with label markup limited to links and
+ * markers, and normalizes its class-break entries the same way. Never trust
+ * a precomputed value from JSON.
*
- * @param {object} relationship - Raw relationship data.
+ * @param {object} relationship - Raw package relationship data.
+ * @param {string} repoUrl - Repository URL prefix from project metadata.
* @returns {object} Relationship with restricted HTML labels.
*/
-function prepareRelationship(relationship) {
+function preparePackageRelationship(relationship, repoUrl) {
registerLinkSafetyHook();
+ const markup = packageRelationshipMarkup(relationship, repoUrl);
return {
...relationship,
- safeRenderedLabel: sanitizeRelationshipLabel(relationship.renderedLabel),
+ safeRenderedLabel: markup == null ? '' : sanitizeRelationshipLabel(markup),
classRelationshipsToBreakPackage: Array.isArray(relationship.classRelationshipsToBreakPackage)
? relationship.classRelationshipsToBreakPackage
- .map(prepareClassBreakEntry)
+ .map(entry => prepareClassBreakEntry(entry, repoUrl))
.filter(entry => entry !== null)
: []
};
@@ -218,13 +390,15 @@ export function prepareReportData(data, tableStates = {}, config = TABLE_CONFIG)
const result = { ...data };
const stateOf = tableId => tableStates?.[tableId];
+ const repoUrl = data.project?.repoUrl;
+
if (Array.isArray(data.classRelationshipsToRemove?.relationships)) {
const descriptor = REPORT_TABLES['class-relationships'];
const { rows, ui } = buildTableSlice(
descriptor, data.classRelationshipsToRemove.relationships, stateOf(descriptor.id), config);
result.classRelationshipsToRemove = {
...data.classRelationshipsToRemove,
- relationships: rows.map(prepareRelationship),
+ relationships: rows.map(row => prepareClassRelationship(row, repoUrl)),
tableUi: ui
};
}
@@ -235,7 +409,7 @@ export function prepareReportData(data, tableStates = {}, config = TABLE_CONFIG)
descriptor, data.packageRelationshipsToRemove.relationships, stateOf(descriptor.id), config);
result.packageRelationshipsToRemove = {
...data.packageRelationshipsToRemove,
- relationships: rows.map(prepareRelationship),
+ relationships: rows.map(row => preparePackageRelationship(row, repoUrl)),
tableUi: ui
};
}
@@ -252,7 +426,20 @@ export function prepareReportData(data, tableStates = {}, config = TABLE_CONFIG)
indicator: ui.colIndicator[columnIndex] ?? '',
tableId: ui.tableId
}));
- return { ...disharmony, ui, table: { ...disharmony.table, headerObjs, rows } };
+ return {
+ ...disharmony,
+ ui,
+ table: {
+ ...disharmony.table,
+ headerObjs,
+ rows: rows.map(row => ({
+ ...row,
+ cells: Array.isArray(row.cells)
+ ? row.cells.map(cell => prepareDisharmonyCell(cell, repoUrl))
+ : row.cells
+ }))
+ }
+ };
});
}
@@ -268,7 +455,7 @@ export function prepareReportData(data, tableStates = {}, config = TABLE_CONFIG)
breakdownDescriptor, largestCycle.breakdown, stateOf(breakdownDescriptor.id), config);
classCycles.largestCycle = {
...largestCycle,
- breakdown: breakdown.rows,
+ breakdown: breakdown.rows.map(row => prepareCycleBreakdownRow(row, repoUrl)),
breakdownUi: breakdown.ui
};
}
diff --git a/lib/report-view.js b/lib/report-view.js
index fd13c59..b81f791 100644
--- a/lib/report-view.js
+++ b/lib/report-view.js
@@ -4,6 +4,8 @@
// vizdom WASM graph rendering. All CDN dependencies are optional — any
// failure degrades to the static rendered report.
+import { sourceUrl } from './utils.js';
+
// ---------------------------------------------------------------------------
// DOT exposure: popup buttons in the Mustache template reference globals.
// ---------------------------------------------------------------------------
@@ -541,7 +543,21 @@ export function isHttpUrl(value) {
* @param {string} [chartData.yaxisLabel] - Overrides the relative churn axis label.
* @returns {void}
*/
-export function initBubbleChart(canvas, title, chartData) {
+/**
+ * Builds the source-file URL of one chart bubble from the report's repository
+ * URL and the bubble's path relative to the project root. The report payload
+ * lists only the path; repoUrl is specified once in the project metadata.
+ *
+ * @param {*} bubble - Raw chart bubble from the report payload.
+ * @param {*} repoUrl - Repository URL prefix from the project metadata.
+ * @returns {string|null} The combined URL, or null when it cannot be built.
+ */
+function bubbleUrl(bubble, repoUrl) {
+ if (!bubble || typeof bubble.path !== 'string') return null;
+ return sourceUrl(repoUrl, bubble.path);
+}
+
+export function initBubbleChart(canvas, title, chartData, repoUrl) {
const ChartLib = window.Chart;
if (!ChartLib) {
console.warn('Chart.js not loaded');
@@ -556,7 +572,10 @@ export function initBubbleChart(canvas, title, chartData) {
data: {
datasets: [{
label: title,
- data: (chartData.bubbles || []).map(b => ({x: b.x, y: b.y, r: b.r, raw: b})),
+ // The constructed repoUrl + path URL wins; a payload url is kept as a
+ // legacy fallback when no URL can be constructed, and null only when
+ // neither exists (the click/hover handlers still gate on isHttpUrl).
+ data: (chartData.bubbles || []).map(b => ({x: b.x, y: b.y, r: b.r, raw: {...b, url: bubbleUrl(b, repoUrl) ?? b.url ?? null}})),
backgroundColor: (chartData.bubbles || []).map(b => b.color),
borderColor: (chartData.bubbles || []).map(b => b.borderColor),
borderWidth: 1
@@ -566,8 +585,9 @@ export function initBubbleChart(canvas, title, chartData) {
responsive: true,
maintainAspectRatio: false,
// Clicking a bubble opens the source file the report links it
- // to (disharmonies[].chart.bubbles[].url) in a new tab, with
- // noopener so the opened page can't reach back into this one.
+ // to (disharmonies[].chart.bubbles[].path combined with the
+ // project repoUrl) in a new tab, with noopener so the opened page
+ // can't reach back into this one.
onClick: (event, elements, chart) => {
const hit = elements && elements[0];
if (!hit || !chart || !chart.data || !chart.data.datasets) return;
@@ -677,11 +697,11 @@ export function initBubbleChart(canvas, title, chartData) {
bubbleCharts.set(canvas, chart);
}
-export function initDisharmonyCharts(disharmonies) {
+export function initDisharmonyCharts(disharmonies, repoUrl) {
(disharmonies || []).forEach(d => {
const canvas = document.getElementById(`chart_${d.anchorId}`);
if (canvas && d.chart && d.chart.bubbles) {
- initBubbleChart(canvas, d.title, d.chart);
+ initBubbleChart(canvas, d.title, d.chart, repoUrl);
}
});
}
@@ -917,6 +937,6 @@ export async function enhanceReport(root, data) {
document.body.appendChild(script);
}
- initDisharmonyCharts(data.disharmonies);
+ initDisharmonyCharts(data.disharmonies, data.project && data.project.repoUrl);
await initWasmGraphs(data);
}
diff --git a/lib/table-operations.js b/lib/table-operations.js
index 805b90d..e89f053 100644
--- a/lib/table-operations.js
+++ b/lib/table-operations.js
@@ -354,13 +354,42 @@ function fallbackCopy(text) {
// filter/export value from a row; without it the raw property is used.
// ---------------------------------------------------------------------------
+/**
+ * Builds the plain-text form of one class relationship (source NAME [marked]
+ * → target NAME [marked]) from the structured ClassRelationshipDTO
+ * fields, used for filtering, sorting and CSV export. Entries without the
+ * structured fields (older reports) yield an empty string.
+ *
+ * @param {*} relationship - Raw ClassRelationshipDTO entry.
+ * @returns {string} Plain-text relationship value.
+ */
+function relationshipText(relationship, sourceNameKey, targetNameKey) {
+ if (!relationship || typeof relationship !== 'object') return '';
+ const hasStructuredFields = relationship[sourceNameKey] != null
+ || relationship[targetNameKey] != null;
+ if (!hasStructuredFields) return '';
+ const source = String(relationship[sourceNameKey] ?? '')
+ + (relationship.sourceMarked ? '*' : '');
+ const target = String(relationship[targetNameKey] ?? '')
+ + (relationship.targetMarked ? '*' : '');
+ return `${source} → ${target}`;
+}
+
+function classRelationshipText(relationship) {
+ return relationshipText(relationship, 'simpleSourceClassName', 'simpleTargetClassName');
+}
+
+function packageRelationshipText(relationship) {
+ return relationshipText(relationship, 'sourcePackage', 'targetPackage');
+}
+
export const REPORT_TABLES = {
'class-relationships': {
id: 'class-relationships',
caption: 'Class relationships to remove, in priority order',
getRows: data => data?.classRelationshipsToRemove?.relationships ?? [],
columns: [
- { key: 'renderedLabel', label: 'Class Relationship', value: row => stripHtml(row.renderedLabel) },
+ { key: 'classRelationship', label: 'Class Relationship', value: classRelationshipText },
{ key: 'priority', label: 'Priority' },
{ key: 'cycleCount', label: 'In Class Cycles' },
{ key: 'effortRank', label: 'Relationship Strength' },
@@ -377,7 +406,7 @@ export const REPORT_TABLES = {
caption: 'Package relationships to remove, in priority order',
getRows: data => data?.packageRelationshipsToRemove?.relationships ?? [],
columns: [
- { key: 'renderedLabel', label: 'Package Relationship', value: row => stripHtml(row.renderedLabel) },
+ { key: 'packageRelationship', label: 'Package Relationship', value: packageRelationshipText },
{ key: 'priority', label: 'Priority' },
{ key: 'cycleCount', label: 'In Pkg Cycles' },
{ key: 'effortRank', label: 'Relationship Strength' },
@@ -385,7 +414,7 @@ export const REPORT_TABLES = {
key: 'classRelationshipsToBreakPackage',
label: 'Class Relationships to Remove To Break Package Relationship',
value: row => (row.classRelationshipsToBreakPackage ?? [])
- .map(entry => stripHtml(entry?.renderedLabel ?? ''))
+ .map(entry => classRelationshipText(entry))
.join('; ')
}
]
@@ -406,7 +435,7 @@ export const REPORT_TABLES = {
caption: 'Classes and relationships in the largest cycle',
getRows: data => data?.classCycles?.largestCycle?.breakdown ?? [],
columns: [
- { key: 'className', label: 'Classes', value: row => stripHtml(row.className) },
+ { key: 'className', label: 'Classes', value: row => stripHtml(row.className ?? '') + (row.marked ? '*' : '') },
{ key: 'edgesHtml', label: 'Relationships', value: row => stripHtml(row.edgesHtml) }
]
}
diff --git a/lib/utils.js b/lib/utils.js
index 198e136..3b64bcb 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -16,6 +16,25 @@ export function escapeHtml(value) {
return String(value).replace(/[&<>"']/g, ch => HTML_ESCAPES[ch]);
}
+/**
+ * Builds the URL of a report-linked source file from the repository URL and
+ * the file path relative to the repository root. Each path segment is
+ * percent-encoded (keeping the / separators) so file-name characters such as
+ * # or ? stay part of the path instead of turning into URL fragment or
+ * query delimiters, and the join tolerates a repository URL without a
+ * trailing slash and a path with a leading slash.
+ *
+ * @param {*} repoUrl - Repository URL prefix from the project metadata.
+ * @param {*} path - File or directory path relative to the repository root.
+ * @returns {string|null} The combined URL, or null when it cannot be built.
+ */
+export function sourceUrl(repoUrl, path) {
+ if (typeof repoUrl !== 'string' || typeof path !== 'string') return null;
+ const base = repoUrl.endsWith('/') ? repoUrl : repoUrl + '/';
+ const relative = path.startsWith('/') ? path.slice(1) : path;
+ return base + relative.split('/').map(encodeURIComponent).join('/');
+}
+
export function sortByRepository(repositories) {
return [...repositories].sort((a, b) =>
a.repository.toLowerCase().localeCompare(b.repository.toLowerCase())
diff --git a/public/assets/refactor-first-report.mustache b/public/assets/refactor-first-report.mustache
index 0b9c568..5fe33ab 100644
--- a/public/assets/refactor-first-report.mustache
+++ b/public/assets/refactor-first-report.mustache
@@ -458,7 +458,7 @@
Class relationships to remove, in priority order
- |
+ |
|
|
|
@@ -569,7 +569,7 @@
Package relationships to remove, in priority order
- |
+ |
|
|
|
@@ -805,7 +805,7 @@
{{#classCycles.largestCycle.breakdown}}
- | {{{className}}} |
+ {{{safeClassName}}} |
{{{edgesHtml}}} |
{{/classCycles.largestCycle.breakdown}}
diff --git a/tests/e2e/report-pagination.spec.js b/tests/e2e/report-pagination.spec.js
index 34161bc..dd30979 100644
--- a/tests/e2e/report-pagination.spec.js
+++ b/tests/e2e/report-pagination.spec.js
@@ -40,12 +40,13 @@ function buildReport() {
relationships: Array.from({ length: CLASS_ROW_COUNT }, (_, i) => ({
sourceClass: `com.example.Source${i}`,
targetClass: `com.example.Target${i}`,
- sourceUrl: null,
- targetUrl: null,
+ sourceClassPath: `src/main/java/com/example/Source${i}.java`,
+ targetClassPath: `src/main/java/com/example/Target${i}.java`,
+ simpleSourceClassName: `Source${i}`,
+ simpleTargetClassName: `Target${i}`,
sourceMarked: false,
targetMarked: false,
weight: 1,
- renderedLabel: `Source${i} to Target${i}`,
priority: (i % 5) + 1,
cycleCount: i % 4,
effortRank: CLASS_ROW_COUNT - i,
@@ -298,8 +299,8 @@ test.describe('csv export', () => {
expect(lines.length).toBe(CLASS_ROW_COUNT + 1);
// The export honours the default sort (priority ascending): the first
// priority-1 row is Source0, the last priority-5 row is Source44.
- expect(lines[1]).toContain('Source0 to Target0');
- expect(lines[CLASS_ROW_COUNT]).toContain(`Source${CLASS_ROW_COUNT - 1} to Target${CLASS_ROW_COUNT - 1}`);
+ expect(lines[1]).toContain('Source0 → Target0');
+ expect(lines[CLASS_ROW_COUNT]).toContain(`Source${CLASS_ROW_COUNT - 1} → Target${CLASS_ROW_COUNT - 1}`);
});
test('export buttons are labelled and keyboard operable', async ({ page }) => {
@@ -320,7 +321,7 @@ test.describe('wide tables', () => {
async function loadWideReport(page) {
const report = buildReport();
for (const rel of report.classRelationshipsToRemove.relationships) {
- rel.renderedLabel = `${WIDE_LABEL} ${rel.priority}`;
+ rel.simpleSourceClassName = `${WIDE_LABEL} ${rel.priority}`;
}
await page.route('**/raw.githubusercontent.com/**', route => {
const url = route.request().url();
diff --git a/tests/fixtures/junit4-report.json b/tests/fixtures/junit4-report.json
index c48ef1c..0a6a8c7 100644
--- a/tests/fixtures/junit4-report.json
+++ b/tests/fixtures/junit4-report.json
@@ -1,3388 +1,4440 @@
{
- "project" : {
- "name" : "JUnit",
- "version" : "4.13.3-SNAPSHOT",
- "repoUrl" : "https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/",
- "baseDir" : "C:\\Code\\junit4",
- "scanTimestamp" : "9/9/26, 8:06 PM",
- "hasAnyDisharmony" : true
+ "project": {
+ "name": "JUnit",
+ "version": "4.13.3-SNAPSHOT",
+ "repoUrl": "https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/",
+ "baseDir": "C:\\Code\\junit4",
+ "scanTimestamp": "9/9/26, 8:06 PM",
+ "hasAnyDisharmony": true
},
- "classMap" : {
- "graphId" : "classGraph",
- "classCount" : 335,
- "relationshipCount" : 934,
- "dotThreshold" : 4000,
- "dotThresholdExceeded" : false,
- "dot" : "strict digraph G {\nActiveTestSuite -> TestSuite [ label = \"6\" weight = \"6\" ];\nActiveTestSuite -> TestCase [ label = \"2\" weight = \"2\" ];\nActiveTestSuite -> TestResult [ label = \"2\" weight = \"2\" ];\nActiveTestSuite -> junit_framework_Test [ label = \"2\" weight = \"2\" ];\nRepeatedTest -> TestDecorator [ label = \"5\" weight = \"5\" ];\nRepeatedTest -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nRepeatedTest -> TestResult [ label = \"2\" weight = \"2\" ];\nTestDecorator -> junit_framework_Assert [ label = \"1\" weight = \"1\" ];\nTestDecorator -> junit_framework_Test [ label = \"7\" weight = \"7\" ];\nTestDecorator -> TestResult [ label = \"2\" weight = \"2\" ];\nTestSetup -> TestDecorator [ label = \"3\" weight = \"3\" ];\nTestSetup -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nTestSetup -> TestResult [ label = \"2\" weight = \"2\" ];\nTestSetup -> Protectable [ label = \"1\" weight = \"1\" ];\njunit_framework_Assert -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\njunit_framework_Assert -> junit_framework_ComparisonFailure [ label = \"1\" weight = \"1\" ];\nComparisonCompactor -> junit_framework_Assert [ label = \"2\" weight = \"2\" color = \"red\" ];\njunit_framework_ComparisonFailure -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\njunit_framework_ComparisonFailure -> ComparisonCompactor [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> junit_framework_Test [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> Filterable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Orderable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Describable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Runner [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapter -> JUnit4TestAdapterCache [ label = \"5\" weight = \"5\" color = \"red\" ];\nJUnit4TestAdapter -> Request [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> TestResult [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Description [ label = \"13\" weight = \"13\" ];\nJUnit4TestAdapter -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Sorter [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> Orderer [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> junit_framework_Test [ label = \"6\" weight = \"6\" ];\nJUnit4TestAdapterCache -> Description [ label = \"14\" weight = \"14\" ];\nJUnit4TestAdapterCache -> JUnit4TestCaseFacade [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> TestSuite [ label = \"3\" weight = \"3\" ];\nJUnit4TestAdapterCache -> TestResult [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapterCache -> JUnit4TestAdapter [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> RunNotifier [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapterCache -> Failure [ label = \"3\" weight = \"3\" ];\nJUnit4TestCaseFacade -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nJUnit4TestCaseFacade -> Describable [ label = \"1\" weight = \"1\" ];\nJUnit4TestCaseFacade -> Description [ label = \"4\" weight = \"4\" ];\nJUnit4TestCaseFacade -> TestResult [ label = \"1\" weight = \"1\" ];\njunit_framework_Test -> TestResult [ label = \"1\" weight = \"1\" color = \"red\" ];\nTestCase -> junit_framework_Assert [ label = \"39\" weight = \"39\" ];\nTestCase -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nTestCase -> TestResult [ label = \"6\" weight = \"6\" color = \"red\" ];\nTestFailure -> junit_framework_Test [ label = \"3\" weight = \"3\" ];\nTestFailure -> Throwables [ label = \"1\" weight = \"1\" ];\nTestFailure -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestListener -> junit_framework_Test [ label = \"4\" weight = \"4\" ];\nTestListener -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestResult -> TestFailure [ label = \"8\" weight = \"8\" ];\nTestResult -> TestListener [ label = \"15\" weight = \"15\" ];\nTestResult -> junit_framework_Test [ label = \"6\" weight = \"6\" ];\nTestResult -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\nTestResult -> TestCase [ label = \"2\" weight = \"2\" ];\nTestResult -> Protectable [ label = \"3\" weight = \"3\" ];\nTestSuite -> junit_framework_Test [ label = \"15\" weight = \"15\" ];\nTestSuite -> TestCase [ label = \"7\" weight = \"7\" ];\nTestSuite -> Throwables [ label = \"3\" weight = \"3\" ];\nTestSuite -> MethodSorter [ label = \"1\" weight = \"1\" ];\nTestSuite -> TestResult [ label = \"3\" weight = \"3\" ];\nBaseTestRunner -> TestListener [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> junit_framework_Test [ label = \"10\" weight = \"10\" ];\nBaseTestRunner -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> TestSuite [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> Throwables [ label = \"1\" weight = \"1\" ];\nResultPrinter -> TestListener [ label = \"1\" weight = \"1\" ];\nResultPrinter -> TestResult [ label = \"14\" weight = \"14\" ];\nResultPrinter -> TestFailure [ label = \"6\" weight = \"6\" ];\nResultPrinter -> BaseTestRunner [ label = \"1\" weight = \"1\" ];\nResultPrinter -> junit_framework_Test [ label = \"4\" weight = \"4\" ];\nResultPrinter -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestRunner -> BaseTestRunner [ label = \"4\" weight = \"4\" ];\nTestRunner -> ResultPrinter [ label = \"6\" weight = \"6\" ];\nTestRunner -> TestCase [ label = \"2\" weight = \"2\" ];\nTestRunner -> TestSuite [ label = \"2\" weight = \"2\" ];\nTestRunner -> junit_framework_Test [ label = \"8\" weight = \"8\" ];\nTestRunner -> TestResult [ label = \"11\" weight = \"11\" ];\nTestRunner -> Version [ label = \"1\" weight = \"1\" ];\norg_junit_Assert -> org_junit_ComparisonFailure [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_Assert -> ArrayComparisonFailure [ label = \"10\" weight = \"10\" ];\norg_junit_Assert -> InexactComparisonCriteria [ label = \"2\" weight = \"2\" ];\norg_junit_Assert -> ComparisonCriteria [ label = \"3\" weight = \"3\" ];\norg_junit_Assert -> ExactComparisonCriteria [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_Assert -> ThrowingRunnable [ label = \"3\" weight = \"3\" ];\nAssume -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_AssumptionViolatedException -> org_junit_internal_AssumptionViolatedException [ label = \"5\" weight = \"5\" ];\norg_junit_ComparisonFailure -> org_junit_ComparisonFailure_ComparisonCompactor [ label = \"2\" weight = \"2\" ];\norg_junit_ComparisonFailure_ComparisonCompactor -> org_junit_Assert [ label = \"2\" weight = \"2\" ];\norg_junit_ComparisonFailure_ComparisonCompactor -> org_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor [ label = \"6\" weight = \"6\" ];\norg_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor -> org_junit_ComparisonFailure_ComparisonCompactor [ label = \"2\" weight = \"2\" color = \"red\" ];\nCategories -> Suite [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Categories [ label = \"6\" weight = \"6\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Description [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> ValidateWith [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Category [ label = \"2\" weight = \"2\" ];\nCategories -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nCategories -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"1\" weight = \"1\" color = \"red\" ];\nCategories -> ParentRunner [ label = \"1\" weight = \"1\" ];\nCategories -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nCategories -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nCategories -> org_junit_experimental_categories_Categories_IncludeCategory [ label = \"4\" weight = \"4\" ];\nCategories -> org_junit_experimental_categories_Categories_ExcludeCategory [ label = \"4\" weight = \"4\" ];\nCategory -> ValidateWith [ label = \"2\" weight = \"2\" ];\nCategory -> CategoryValidator [ label = \"1\" weight = \"1\" ];\nCategoryFilterFactory -> FilterFactory [ label = \"1\" weight = \"1\" ];\nCategoryFilterFactory -> FilterFactoryParams [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> Filter [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> Classes [ label = \"1\" weight = \"1\" ];\nCategoryValidator -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\nCategoryValidator -> FrameworkMethod [ label = \"2\" weight = \"2\" ];\nExcludeCategories -> CategoryFilterFactory [ label = \"1\" weight = \"1\" ];\nExcludeCategories -> org_junit_experimental_categories_ExcludeCategories_ExcludesAny [ label = \"1\" weight = \"1\" ];\nExcludeCategories -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_ExcludeCategories_ExcludesAny -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"3\" weight = \"3\" ];\nIncludeCategories -> CategoryFilterFactory [ label = \"1\" weight = \"1\" ];\nIncludeCategories -> org_junit_experimental_categories_IncludeCategories_IncludesAny [ label = \"1\" weight = \"1\" ];\nIncludeCategories -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_IncludeCategories_IncludesAny -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"3\" weight = \"3\" ];\nMaxCore -> MaxHistory [ label = \"4\" weight = \"4\" ];\nMaxCore -> Request [ label = \"14\" weight = \"14\" ];\nMaxCore -> Result [ label = \"3\" weight = \"3\" ];\nMaxCore -> JUnitCore [ label = \"4\" weight = \"4\" ];\nMaxCore -> SortingRequest [ label = \"1\" weight = \"1\" ];\nMaxCore -> Description [ label = \"22\" weight = \"22\" ];\nMaxCore -> Runner [ label = \"4\" weight = \"4\" ];\nMaxCore -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nMaxCore -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxCore_1 -> Runner [ label = \"1\" weight = \"1\" ];\nMaxCore -> org_junit_experimental_max_MaxCore_1 [ label = \"1\" weight = \"1\" ];\nMaxCore -> Suite [ label = \"1\" weight = \"1\" ];\nMaxCore -> TestSuite [ label = \"1\" weight = \"1\" ];\nMaxCore -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nMaxHistory -> CouldNotReadCoreException [ label = \"3\" weight = \"3\" ];\nMaxHistory -> Description [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Description [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> MaxHistory [ label = \"3\" weight = \"3\" color = \"red\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Failure [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Result [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxHistory_TestComparator -> Description [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_max_MaxHistory_TestComparator -> MaxHistory [ label = \"5\" weight = \"5\" ];\nMaxHistory -> org_junit_experimental_max_MaxHistory_RememberingListener [ label = \"1\" weight = \"1\" ];\nMaxHistory -> RunListener [ label = \"1\" weight = \"1\" ];\nMaxHistory -> org_junit_experimental_max_MaxHistory_TestComparator [ label = \"1\" weight = \"1\" color = \"red\" ];\nParallelComputer -> Computer [ label = \"5\" weight = \"5\" ];\nParallelComputer -> Runner [ label = \"6\" weight = \"6\" ];\nParallelComputer -> ParentRunner [ label = \"3\" weight = \"3\" ];\nParallelComputer -> RunnerBuilder [ label = \"2\" weight = \"2\" ];\nParallelComputer -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nFailureList -> Failure [ label = \"3\" weight = \"3\" ];\nFailureList -> Result [ label = \"4\" weight = \"4\" ];\nFailureList -> RunListener [ label = \"2\" weight = \"2\" ];\nPrintableResult -> Result [ label = \"4\" weight = \"4\" ];\nPrintableResult -> Request [ label = \"2\" weight = \"2\" ];\nPrintableResult -> JUnitCore [ label = \"2\" weight = \"2\" ];\nPrintableResult -> Failure [ label = \"2\" weight = \"2\" ];\nPrintableResult -> FailureList [ label = \"2\" weight = \"2\" ];\nPrintableResult -> TextListener [ label = \"2\" weight = \"2\" ];\nResultMatchers -> PrintableResult [ label = \"8\" weight = \"8\" ];\nResultMatchers -> Failure [ label = \"1\" weight = \"1\" ];\nEnclosed -> Suite [ label = \"2\" weight = \"2\" ];\nEnclosed -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nFromDataPoints -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nFromDataPoints -> SpecificDataPointsSupplier [ label = \"1\" weight = \"1\" ];\nAllMembersSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> DataPoint [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> AllMembersSupplier [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> Assume [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"3\" weight = \"3\" ];\nAllMembersSupplier -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nAllMembersSupplier -> ParameterSignature [ label = \"17\" weight = \"17\" ];\nAllMembersSupplier -> PotentialAssignment [ label = \"13\" weight = \"13\" ];\nAllMembersSupplier -> FrameworkMethod [ label = \"9\" weight = \"9\" ];\nAllMembersSupplier -> DataPoints [ label = \"2\" weight = \"2\" ];\nAllMembersSupplier -> org_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue [ label = \"1\" weight = \"1\" ];\nAllMembersSupplier -> FrameworkField [ label = \"6\" weight = \"6\" ];\nAssignments -> PotentialAssignment [ label = \"11\" weight = \"11\" ];\nAssignments -> ParameterSignature [ label = \"13\" weight = \"13\" ];\nAssignments -> org_junit_runners_model_TestClass [ label = \"5\" weight = \"5\" ];\nAssignments -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"5\" weight = \"5\" ];\nAssignments -> ParameterSupplier [ label = \"5\" weight = \"5\" ];\nAssignments -> EnumSupplier [ label = \"2\" weight = \"2\" ];\nAssignments -> BooleanSupplier [ label = \"2\" weight = \"2\" ];\nAssignments -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nAssignments -> AllMembersSupplier [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> PotentialAssignment [ label = \"3\" weight = \"3\" ];\nEnumSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nEnumSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nEnumSupplier -> PotentialAssignment [ label = \"4\" weight = \"4\" ];\nSpecificDataPointsSupplier -> AllMembersSupplier [ label = \"6\" weight = \"6\" ];\nSpecificDataPointsSupplier -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nSpecificDataPointsSupplier -> ParameterSignature [ label = \"8\" weight = \"8\" ];\nSpecificDataPointsSupplier -> ParametersSuppliedBy [ label = \"4\" weight = \"4\" ];\nSpecificDataPointsSupplier -> FromDataPoints [ label = \"4\" weight = \"4\" color = \"red\" ];\nSpecificDataPointsSupplier -> DataPoint [ label = \"2\" weight = \"2\" ];\nSpecificDataPointsSupplier -> DataPoints [ label = \"2\" weight = \"2\" ];\nSpecificDataPointsSupplier -> FrameworkMethod [ label = \"12\" weight = \"12\" ];\nParametersSuppliedBy -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nParameterSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nParameterSupplier -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\nPotentialAssignment -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"2\" weight = \"2\" ];\nTestedOn -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTestedOn -> TestedOnSupplier [ label = \"1\" weight = \"1\" ];\nTestedOnSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nTestedOnSupplier -> ParameterSignature [ label = \"2\" weight = \"2\" ];\nTestedOnSupplier -> PotentialAssignment [ label = \"4\" weight = \"4\" ];\nTestedOnSupplier -> TestedOn [ label = \"2\" weight = \"2\" color = \"red\" ];\nTestedOnSupplier -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTheories -> BlockJUnit4ClassRunner [ label = \"6\" weight = \"6\" ];\nTheories -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nTheories -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\nTheories -> ParentRunner [ label = \"4\" weight = \"4\" ];\nTheories -> FrameworkMethod [ label = \"11\" weight = \"11\" ];\nTheories -> ParameterSignature [ label = \"3\" weight = \"3\" ];\nTheories -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTheories -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nTheories -> org_junit_experimental_theories_Theories_TheoryAnchor [ label = \"1\" weight = \"1\" ];\nTheories -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Statement [ label = \"5\" weight = \"5\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> FrameworkMethod [ label = \"10\" weight = \"10\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_internal_AssumptionViolatedException [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Assignments [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> BlockJUnit4ClassRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor_1 -> Statement [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Assume [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> ParentRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_experimental_theories_Theories_TheoryAnchor_1 [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> ParameterizedAssertionError [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Theory [ label = \"2\" weight = \"2\" ];\nFixMethodOrder -> MethodSorters [ label = \"1\" weight = \"1\" ];\norg_junit_internal_AssumptionViolatedException -> SerializableMatcherDescription [ label = \"1\" weight = \"1\" ];\norg_junit_internal_AssumptionViolatedException -> SerializableValueDescription [ label = \"1\" weight = \"1\" ];\nAllDefaultPossibilitiesBuilder -> RunnerBuilder [ label = \"5\" weight = \"5\" ];\nAllDefaultPossibilitiesBuilder -> Runner [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> JUnit4Builder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> JUnit3Builder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> AnnotatedBuilder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> IgnoredBuilder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> SuiteMethodBuilder [ label = \"1\" weight = \"1\" ];\nAllDefaultPossibilitiesBuilder -> NullBuilder [ label = \"1\" weight = \"1\" ];\nAnnotatedBuilder -> RunnerBuilder [ label = \"3\" weight = \"3\" ];\nAnnotatedBuilder -> RunWith [ label = \"2\" weight = \"2\" ];\nAnnotatedBuilder -> Runner [ label = \"3\" weight = \"3\" ];\nAnnotatedBuilder -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> IgnoredClassRunner [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nIgnoredClassRunner -> Runner [ label = \"1\" weight = \"1\" ];\nIgnoredClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nIgnoredClassRunner -> Description [ label = \"2\" weight = \"2\" ];\nJUnit3Builder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nJUnit3Builder -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nJUnit3Builder -> Runner [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> JUnit4 [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> Runner [ label = \"1\" weight = \"1\" ];\nNullBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nNullBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> SuiteMethod [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nComparisonCriteria -> ArrayComparisonFailure [ label = \"7\" weight = \"7\" ];\nComparisonCriteria -> org_junit_Assert [ label = \"3\" weight = \"3\" color = \"red\" ];\nExactComparisonCriteria -> ComparisonCriteria [ label = \"1\" weight = \"1\" ];\nExactComparisonCriteria -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nInexactComparisonCriteria -> ComparisonCriteria [ label = \"1\" weight = \"1\" ];\nInexactComparisonCriteria -> org_junit_Assert [ label = \"2\" weight = \"2\" color = \"red\" ];\nFakeRuntimeMXBean -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nFakeThreadMXBean -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_FactoryHolder -> Classes [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> org_junit_internal_management_ManagementFactory_FactoryHolder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> RuntimeMXBean [ label = \"2\" weight = \"2\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> ReflectiveRuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> FakeRuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> org_junit_internal_management_ManagementFactory_FactoryHolder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> ThreadMXBean [ label = \"2\" weight = \"2\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> ReflectiveThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> FakeThreadMXBean [ label = \"1\" weight = \"1\" ];\nManagementFactory -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nManagementFactory -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\nReflectiveRuntimeMXBean -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ReflectiveRuntimeMXBean_Holder -> Classes [ label = \"1\" weight = \"1\" ];\nReflectiveThreadMXBean -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ReflectiveThreadMXBean_Holder -> Classes [ label = \"1\" weight = \"1\" ];\nStacktracePrintingMatcher -> Throwables [ label = \"1\" weight = \"1\" ];\nThrowableCauseMatcher -> TypeSafeMatcher [ label = \"1\" weight = \"1\" ];\nThrowableMessageMatcher -> TypeSafeMatcher [ label = \"1\" weight = \"1\" ];\nTypeSafeMatcher -> MethodSorter [ label = \"1\" weight = \"1\" ];\nMethodSorter -> FixMethodOrder [ label = \"2\" weight = \"2\" ];\nMethodSorter -> MethodSorters [ label = \"1\" weight = \"1\" ];\nRealSystem -> JUnitSystem [ label = \"1\" weight = \"1\" ];\nClassRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nClassRequest -> org_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\nClassRequest -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nClassRequest -> Runner [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> AllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> org_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder -> SuiteMethodBuilder [ label = \"2\" weight = \"2\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nFilterRequest -> Request [ label = \"4\" weight = \"4\" ];\nFilterRequest -> Filter [ label = \"4\" weight = \"4\" ];\nFilterRequest -> Runner [ label = \"2\" weight = \"2\" ];\nFilterRequest -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nFilterRequest -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nMemoizingRequest -> Request [ label = \"1\" weight = \"1\" color = \"red\" ];\nMemoizingRequest -> Runner [ label = \"3\" weight = \"3\" ];\nOrderingRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> Request [ label = \"3\" weight = \"3\" color = \"red\" ];\nOrderingRequest -> Ordering [ label = \"3\" weight = \"3\" ];\nOrderingRequest -> Runner [ label = \"2\" weight = \"2\" ];\nOrderingRequest -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nSortingRequest -> Request [ label = \"4\" weight = \"4\" ];\nSortingRequest -> Description [ label = \"2\" weight = \"2\" ];\nSortingRequest -> Runner [ label = \"2\" weight = \"2\" ];\nSortingRequest -> Sorter [ label = \"2\" weight = \"2\" ];\nClassRoadie -> RunNotifier [ label = \"3\" weight = \"3\" ];\nClassRoadie -> org_junit_internal_runners_TestClass [ label = \"4\" weight = \"4\" ];\nClassRoadie -> Description [ label = \"2\" weight = \"2\" ];\nClassRoadie -> Failure [ label = \"1\" weight = \"1\" ];\nClassRoadie -> FailedBefore [ label = \"4\" weight = \"4\" ];\nClassRoadie -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> Runner [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> Description [ label = \"7\" weight = \"7\" ];\nErrorReportingRunner -> RunNotifier [ label = \"5\" weight = \"5\" ];\nErrorReportingRunner -> InvalidTestClassError [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> org_junit_runners_model_InitializationError [ label = \"3\" weight = \"3\" ];\nErrorReportingRunner -> org_junit_internal_runners_InitializationError [ label = \"3\" weight = \"3\" ];\nErrorReportingRunner -> Failure [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Runner [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> Filterable [ label = \"5\" weight = \"5\" ];\nJUnit38ClassRunner -> Orderable [ label = \"5\" weight = \"5\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> TestListener [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> RunNotifier [ label = \"5\" weight = \"5\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> junit_framework_Test [ label = \"10\" weight = \"10\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Failure [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Describable [ label = \"4\" weight = \"4\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Description [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> TestCase [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> junit_framework_Test [ label = \"8\" weight = \"8\" ];\nJUnit38ClassRunner -> TestSuite [ label = \"21\" weight = \"21\" ];\nJUnit38ClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> TestResult [ label = \"3\" weight = \"3\" ];\nJUnit38ClassRunner -> org_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> TestListener [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Description [ label = \"8\" weight = \"8\" ];\nJUnit38ClassRunner -> TestCase [ label = \"6\" weight = \"6\" ];\nJUnit38ClassRunner -> Describable [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> TestDecorator [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> NoTestsRemainException [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> Sorter [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Sortable [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> Orderer [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Runner [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Filterable [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Sortable [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> org_junit_internal_runners_TestClass [ label = \"8\" weight = \"8\" ];\nJUnit4ClassRunner -> org_junit_internal_runners_InitializationError [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> MethodValidator [ label = \"4\" weight = \"4\" ];\nJUnit4ClassRunner -> RunNotifier [ label = \"7\" weight = \"7\" ];\nJUnit4ClassRunner -> ClassRoadie [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Description [ label = \"8\" weight = \"8\" ];\nJUnit4ClassRunner -> TestMethod [ label = \"3\" weight = \"3\" ];\nJUnit4ClassRunner -> MethodRoadie [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Failure [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> NoTestsRemainException [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Sorter [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> RunNotifier [ label = \"6\" weight = \"6\" ];\nMethodRoadie -> Description [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> TestMethod [ label = \"12\" weight = \"12\" ];\nMethodRoadie -> TestTimedOutException [ label = \"1\" weight = \"1\" ];\nMethodRoadie -> FailedBefore [ label = \"4\" weight = \"4\" ];\nMethodRoadie -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> Failure [ label = \"1\" weight = \"1\" ];\nMethodValidator -> org_junit_internal_runners_TestClass [ label = \"5\" weight = \"5\" ];\nMethodValidator -> org_junit_internal_runners_InitializationError [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> RunNotifier [ label = \"9\" weight = \"9\" ];\nEachTestNotifier -> Description [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> org_junit_runners_model_MultipleFailureException [ label = \"4\" weight = \"4\" ];\nEachTestNotifier -> Failure [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_model_MultipleFailureException -> org_junit_runners_model_MultipleFailureException [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_Builder [ label = \"25\" weight = \"25\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic [ label = \"4\" weight = \"4\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule [ label = \"1\" weight = \"1\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule [ label = \"1\" weight = \"1\" color = \"red\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule [ label = \"1\" weight = \"1\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule [ label = \"1\" weight = \"1\" color = \"red\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"3\" weight = \"3\" ];\nRuleMemberValidator -> org_junit_runners_model_TestClass [ label = \"3\" weight = \"3\" ];\nRuleMemberValidator -> FrameworkMember [ label = \"8\" weight = \"8\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder -> RuleMemberValidator [ label = \"2\" weight = \"2\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_RuleValidator -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> RuleMemberValidator [ label = \"2\" weight = \"2\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> FrameworkMember [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> RuleMemberValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> RuleMemberValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> RuleMemberValidator [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> RuleMemberValidator [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> ValidationError [ label = \"1\" weight = \"1\" ];\nValidationError -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nExpectException -> Statement [ label = \"4\" weight = \"4\" ];\nExpectException -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nFail -> Statement [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> Statement [ label = \"4\" weight = \"4\" ];\nFailOnTimeout -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"4\" weight = \"4\" ];\norg_junit_internal_runners_statements_FailOnTimeout_Builder -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_statements_FailOnTimeout_Builder -> FailOnTimeout [ label = \"2\" weight = \"2\" color = \"red\" ];\nFailOnTimeout -> org_junit_internal_runners_statements_FailOnTimeout_CallableStatement [ label = \"3\" weight = \"3\" ];\nFailOnTimeout -> TestTimedOutException [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> ManagementFactory [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> ThreadMXBean [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_statements_FailOnTimeout_CallableStatement -> Statement [ label = \"1\" weight = \"1\" ];\nInvokeMethod -> Statement [ label = \"1\" weight = \"1\" ];\nInvokeMethod -> FrameworkMethod [ label = \"3\" weight = \"3\" ];\nRunAfters -> Statement [ label = \"4\" weight = \"4\" ];\nRunAfters -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nRunAfters -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nRunBefores -> Statement [ label = \"4\" weight = \"4\" ];\nRunBefores -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nSuiteMethod -> JUnit38ClassRunner [ label = \"2\" weight = \"2\" ];\nSuiteMethod -> junit_framework_Test [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_TestClass -> MethodSorter [ label = \"1\" weight = \"1\" ];\nTestMethod -> org_junit_internal_runners_TestClass [ label = \"4\" weight = \"4\" ];\nTestMethod -> org_junit_Test [ label = \"5\" weight = \"5\" ];\nTextListener -> RunListener [ label = \"1\" weight = \"1\" ];\nTextListener -> JUnitSystem [ label = \"2\" weight = \"2\" ];\nTextListener -> Result [ label = \"10\" weight = \"10\" ];\nTextListener -> Description [ label = \"2\" weight = \"2\" ];\nTextListener -> Failure [ label = \"6\" weight = \"6\" ];\nThrowables -> org_junit_internal_Throwables_State [ label = \"2\" weight = \"2\" ];\norg_junit_internal_Throwables_State -> Throwables [ label = \"5\" weight = \"5\" color = \"red\" ];\norg_junit_internal_Throwables_State_1 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_1 [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State_2 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_2 [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State_3 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_3 [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State_4 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_4 [ label = \"1\" weight = \"1\" color = \"red\" ];\nJUnitMatchers -> StacktracePrintingMatcher [ label = \"2\" weight = \"2\" ];\nDisableOnDebug -> TestRule [ label = \"5\" weight = \"5\" ];\nDisableOnDebug -> ManagementFactory [ label = \"1\" weight = \"1\" ];\nDisableOnDebug -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nDisableOnDebug -> Statement [ label = \"2\" weight = \"2\" ];\nDisableOnDebug -> Description [ label = \"1\" weight = \"1\" ];\nErrorCollector -> Verifier [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nErrorCollector -> ThrowingRunnable [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nExpectedException -> TestRule [ label = \"1\" weight = \"1\" ];\nExpectedException -> ExpectedExceptionMatcherBuilder [ label = \"6\" weight = \"6\" ];\nExpectedException -> Statement [ label = \"2\" weight = \"2\" ];\nExpectedException -> Description [ label = \"1\" weight = \"1\" ];\nExpectedException -> org_junit_rules_ExpectedException_ExpectedExceptionStatement [ label = \"1\" weight = \"1\" ];\nExpectedException -> ThrowableMessageMatcher [ label = \"1\" weight = \"1\" ];\nExpectedException -> ThrowableCauseMatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement -> Statement [ label = \"4\" weight = \"4\" ];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement -> ExpectedException [ label = \"3\" weight = \"3\" color = \"red\" ];\nExpectedException -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nExpectedExceptionMatcherBuilder -> JUnitMatchers [ label = \"1\" weight = \"1\" ];\nExternalResource -> TestRule [ label = \"1\" weight = \"1\" ];\nExternalResource -> Statement [ label = \"5\" weight = \"5\" ];\nExternalResource -> Description [ label = \"1\" weight = \"1\" ];\nExternalResource -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nMethodRule -> Statement [ label = \"2\" weight = \"2\" ];\nMethodRule -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nRuleChain -> TestRule [ label = \"8\" weight = \"8\" ];\nRuleChain -> Statement [ label = \"2\" weight = \"2\" ];\nRuleChain -> Description [ label = \"1\" weight = \"1\" ];\nRuleChain -> RunRules [ label = \"1\" weight = \"1\" ];\nRunRules -> Statement [ label = \"6\" weight = \"6\" ];\nRunRules -> TestRule [ label = \"4\" weight = \"4\" ];\nRunRules -> Description [ label = \"2\" weight = \"2\" ];\nStopwatch -> TestRule [ label = \"1\" weight = \"1\" ];\nStopwatch -> org_junit_rules_Stopwatch_Clock [ label = \"6\" weight = \"6\" ];\nStopwatch -> Description [ label = \"5\" weight = \"5\" ];\nStopwatch -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nStopwatch -> Statement [ label = \"2\" weight = \"2\" ];\nStopwatch -> org_junit_rules_Stopwatch_InternalWatcher [ label = \"1\" weight = \"1\" ];\nStopwatch -> TestWatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> TestWatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> Description [ label = \"5\" weight = \"5\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> Stopwatch [ label = \"12\" weight = \"12\" color = \"red\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nTemporaryFolder -> ExternalResource [ label = \"1\" weight = \"1\" ];\nTemporaryFolder -> org_junit_rules_TemporaryFolder_Builder [ label = \"3\" weight = \"3\" color = \"red\" ];\norg_junit_rules_TemporaryFolder_Builder -> TemporaryFolder [ label = \"2\" weight = \"2\" ];\nTemporaryFolder -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nTestName -> TestWatcher [ label = \"1\" weight = \"1\" ];\nTestName -> Description [ label = \"2\" weight = \"2\" ];\nTestRule -> Statement [ label = \"2\" weight = \"2\" ];\nTestRule -> Description [ label = \"1\" weight = \"1\" ];\nTestWatcher -> TestRule [ label = \"1\" weight = \"1\" ];\nTestWatcher -> Statement [ label = \"3\" weight = \"3\" ];\nTestWatcher -> Description [ label = \"12\" weight = \"12\" ];\nTestWatcher -> org_junit_internal_AssumptionViolatedException [ label = \"4\" weight = \"4\" ];\nTestWatcher -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nTestWatcher -> org_junit_AssumptionViolatedException [ label = \"3\" weight = \"3\" ];\nTestWatchman -> MethodRule [ label = \"1\" weight = \"1\" ];\nTestWatchman -> Statement [ label = \"3\" weight = \"3\" ];\nTestWatchman -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nTestWatchman -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nTimeout -> TestRule [ label = \"1\" weight = \"1\" ];\nTimeout -> org_junit_rules_Timeout_Builder [ label = \"6\" weight = \"6\" color = \"red\" ];\nTimeout -> Statement [ label = \"4\" weight = \"4\" ];\nTimeout -> FailOnTimeout [ label = \"1\" weight = \"1\" ];\nTimeout -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"3\" weight = \"3\" ];\nTimeout -> Description [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Timeout_Builder -> Timeout [ label = \"2\" weight = \"2\" ];\nVerifier -> TestRule [ label = \"1\" weight = \"1\" ];\nVerifier -> Statement [ label = \"3\" weight = \"3\" ];\nVerifier -> Description [ label = \"1\" weight = \"1\" ];\nComputer -> RunnerBuilder [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Computer_1 -> Runner [ label = \"1\" weight = \"1\" ];\nComputer -> org_junit_runner_Computer_1 [ label = \"1\" weight = \"1\" ];\nComputer -> Runner [ label = \"2\" weight = \"2\" ];\nComputer -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nDescribable -> Description [ label = \"1\" weight = \"1\" ];\nFilterFactories -> Request [ label = \"2\" weight = \"2\" ];\nFilterFactories -> Runner [ label = \"1\" weight = \"1\" ];\nFilterFactories -> Description [ label = \"1\" weight = \"1\" ];\nFilterFactories -> FilterFactoryParams [ label = \"3\" weight = \"3\" ];\nFilterFactories -> Filter [ label = \"3\" weight = \"3\" ];\nFilterFactories -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"7\" weight = \"7\" ];\nFilterFactories -> FilterFactory [ label = \"9\" weight = \"9\" ];\nFilterFactories -> Classes [ label = \"1\" weight = \"1\" ];\nFilterFactory -> FilterFactoryParams [ label = \"1\" weight = \"1\" ];\nFilterFactory -> Filter [ label = \"1\" weight = \"1\" ];\nFilterFactory -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"1\" weight = \"1\" ];\nFilterFactoryParams -> Description [ label = \"3\" weight = \"3\" ];\nJUnitCommandLineParseResult -> org_junit_runner_JUnitCommandLineParseResult_CommandLineParserError [ label = \"2\" weight = \"2\" ];\nJUnitCommandLineParseResult -> Classes [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> Request [ label = \"8\" weight = \"8\" ];\nJUnitCommandLineParseResult -> Computer [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> FilterFactories [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> Filter [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"1\" weight = \"1\" ];\nJUnitCore -> RunNotifier [ label = \"7\" weight = \"7\" ];\nJUnitCore -> RealSystem [ label = \"1\" weight = \"1\" ];\nJUnitCore -> Result [ label = \"13\" weight = \"13\" ];\nJUnitCore -> Computer [ label = \"4\" weight = \"4\" ];\nJUnitCore -> JUnitSystem [ label = \"2\" weight = \"2\" ];\nJUnitCore -> Version [ label = \"2\" weight = \"2\" ];\nJUnitCore -> JUnitCommandLineParseResult [ label = \"3\" weight = \"3\" ];\nJUnitCore -> TextListener [ label = \"1\" weight = \"1\" ];\nJUnitCore -> RunListener [ label = \"4\" weight = \"4\" ];\nJUnitCore -> Request [ label = \"3\" weight = \"3\" ];\nJUnitCore -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nJUnitCore -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nJUnitCore -> Runner [ label = \"3\" weight = \"3\" ];\nAlphanumeric -> Sorter [ label = \"2\" weight = \"2\" ];\nAlphanumeric -> org_junit_runner_manipulation_Ordering_Factory [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> Ordering [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> Description [ label = \"5\" weight = \"5\" ];\nFilter -> Description [ label = \"10\" weight = \"10\" ];\norg_junit_runner_manipulation_Filter_1 -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\norg_junit_runner_manipulation_Filter_1 -> Filter [ label = \"1\" weight = \"1\" ];\nFilter -> org_junit_runner_manipulation_Filter_1 [ label = \"1\" weight = \"1\" color = \"red\" ];\nFilter -> Filterable [ label = \"4\" weight = \"4\" ];\nFilter -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nFilterable -> Filter [ label = \"1\" weight = \"1\" color = \"red\" ];\nFilterable -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nOrderable -> Sortable [ label = \"1\" weight = \"1\" ];\nOrderable -> Orderer [ label = \"1\" weight = \"1\" color = \"red\" ];\nOrderable -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nOrderer -> Ordering [ label = \"4\" weight = \"4\" ];\nOrderer -> Description [ label = \"7\" weight = \"7\" ];\nOrderer -> InvalidOrderingException [ label = \"5\" weight = \"5\" ];\nOrderer -> Orderable [ label = \"4\" weight = \"4\" ];\nOrdering -> Description [ label = \"7\" weight = \"7\" ];\norg_junit_runner_manipulation_Ordering_1 -> Description [ label = \"1\" weight = \"1\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_1 [ label = \"1\" weight = \"1\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_Factory [ label = \"5\" weight = \"5\" ];\nOrdering -> InvalidOrderingException [ label = \"5\" weight = \"5\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\nOrdering -> Orderable [ label = \"4\" weight = \"4\" ];\nOrdering -> Orderer [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_manipulation_Ordering_Context -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runner_manipulation_Ordering_Factory -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\norg_junit_runner_manipulation_Ordering_Factory -> Ordering [ label = \"1\" weight = \"1\" color = \"red\" ];\nSortable -> Sorter [ label = \"1\" weight = \"1\" color = \"red\" ];\nSorter -> Ordering [ label = \"1\" weight = \"1\" ];\nSorter -> Description [ label = \"11\" weight = \"11\" ];\nSorter -> Sortable [ label = \"4\" weight = \"4\" ];\nFailure -> Description [ label = \"4\" weight = \"4\" ];\nFailure -> Throwables [ label = \"2\" weight = \"2\" ];\nRunListener -> Description [ label = \"6\" weight = \"6\" ];\nRunListener -> Result [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunListener -> Failure [ label = \"2\" weight = \"2\" ];\nRunNotifier -> RunListener [ label = \"26\" weight = \"26\" ];\nRunNotifier -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"1\" weight = \"1\" ];\nRunNotifier -> SynchronizedRunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> RunListener [ label = \"6\" weight = \"6\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> Failure [ label = \"3\" weight = \"3\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> RunNotifier [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunNotifier -> Description [ label = \"6\" weight = \"6\" ];\nRunNotifier -> org_junit_runner_notification_RunNotifier_SafeNotifier [ label = \"9\" weight = \"9\" ];\nRunNotifier -> Result [ label = \"1\" weight = \"1\" ];\nRunNotifier -> StoppedByUserException [ label = \"2\" weight = \"2\" ];\nRunNotifier -> Failure [ label = \"4\" weight = \"4\" ];\nSynchronizedRunListener -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"5\" weight = \"5\" ];\nSynchronizedRunListener -> RunListener [ label = \"12\" weight = \"12\" ];\nSynchronizedRunListener -> Description [ label = \"6\" weight = \"6\" ];\nSynchronizedRunListener -> Result [ label = \"1\" weight = \"1\" ];\nSynchronizedRunListener -> Failure [ label = \"2\" weight = \"2\" ];\nOrderWith -> ValidateWith [ label = \"2\" weight = \"2\" ];\nOrderWith -> OrderWithValidator [ label = \"1\" weight = \"1\" ];\nOrderWith -> org_junit_runner_manipulation_Ordering_Factory [ label = \"1\" weight = \"1\" ];\nOrderWithValidator -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\nOrderWithValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\nRequest -> Description [ label = \"4\" weight = \"4\" ];\nRequest -> ClassRequest [ label = \"2\" weight = \"2\" ];\nRequest -> Computer [ label = \"2\" weight = \"2\" ];\nRequest -> AllDefaultPossibilitiesBuilder [ label = \"2\" weight = \"2\" ];\nRequest -> Runner [ label = \"3\" weight = \"3\" ];\nRequest -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nRequest -> ErrorReportingRunner [ label = \"2\" weight = \"2\" ];\nRequest -> JUnitCore [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_Request_1 -> Runner [ label = \"1\" weight = \"1\" ];\nRequest -> org_junit_runner_Request_1 [ label = \"1\" weight = \"1\" ];\nRequest -> Filter [ label = \"2\" weight = \"2\" ];\nRequest -> FilterRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> SortingRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> Ordering [ label = \"1\" weight = \"1\" ];\nRequest -> OrderingRequest [ label = \"1\" weight = \"1\" ];\nResult -> Failure [ label = \"4\" weight = \"4\" ];\nResult -> org_junit_runner_Result_SerializedForm [ label = \"6\" weight = \"6\" color = \"red\" ];\norg_junit_runner_Result_Listener -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"2\" weight = \"2\" ];\norg_junit_runner_Result_Listener -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_Result_Listener -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Result_Listener -> Result [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_Result_Listener -> Failure [ label = \"2\" weight = \"2\" ];\nResult -> org_junit_runner_Result_Listener [ label = \"1\" weight = \"1\" ];\nResult -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"1\" weight = \"1\" ];\nResult -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_Result_SerializedForm -> Failure [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Result_SerializedForm -> Result [ label = \"1\" weight = \"1\" ];\nRunner -> Describable [ label = \"1\" weight = \"1\" ];\nRunner -> Description [ label = \"2\" weight = \"2\" ];\nRunner -> RunNotifier [ label = \"1\" weight = \"1\" ];\nRunWith -> Runner [ label = \"1\" weight = \"1\" ];\nAllTests -> SuiteMethod [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> FrameworkMethod [ label = \"24\" weight = \"24\" ];\nBlockJUnit4ClassRunner -> ParentRunner [ label = \"27\" weight = \"27\" ];\nBlockJUnit4ClassRunner -> PublicClassValidator [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> TestClassValidator [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> Description [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_model_TestClass [ label = \"16\" weight = \"16\" ];\nBlockJUnit4ClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> Statement [ label = \"15\" weight = \"15\" ];\nBlockJUnit4ClassRunner -> RuleMemberValidator [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> ReflectiveCallable [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> Fail [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> InvokeMethod [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> org_junit_Test [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> ExpectException [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> FailOnTimeout [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> RunBefores [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> RunAfters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> RuleContainer [ label = \"7\" weight = \"7\" ];\nBlockJUnit4ClassRunner -> TestRule [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> MethodRule [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_BlockJUnit4ClassRunner_RuleCollector [ label = \"4\" weight = \"4\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> MemberValueConsumer [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> Rule [ label = \"2\" weight = \"2\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> RuleContainer [ label = \"2\" weight = \"2\" ];\nJUnit4 -> BlockJUnit4ClassRunner [ label = \"2\" weight = \"2\" ];\nJUnit4 -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nJUnit4 -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nFrameworkField -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nFrameworkMember -> Annotatable [ label = \"1\" weight = \"1\" ];\nFrameworkMethod -> FrameworkMember [ label = \"4\" weight = \"4\" ];\nFrameworkMethod -> ReflectiveCallable [ label = \"1\" weight = \"1\" ];\nFrameworkMethod -> NoGenericTypeParametersValidator [ label = \"2\" weight = \"2\" ];\nInvalidTestClassError -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nMemberValueConsumer -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_MultipleFailureException -> TestCouldNotBeSkippedException [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> Throwables [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> org_junit_internal_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunnerBuilder -> Runner [ label = \"11\" weight = \"11\" ];\nRunnerBuilder -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nRunnerBuilder -> Description [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> ValidateWith [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> OrderWith [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> Ordering [ label = \"3\" weight = \"3\" ];\nRunnerBuilder -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nRunnerBuilder -> org_junit_runners_model_InitializationError [ label = \"4\" weight = \"4\" ];\norg_junit_runners_model_TestClass -> Annotatable [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> org_junit_runners_model_TestClass_FieldComparator [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> org_junit_runners_model_TestClass_MethodComparator [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> FrameworkMethod [ label = \"12\" weight = \"12\" ];\norg_junit_runners_model_TestClass -> FrameworkField [ label = \"9\" weight = \"9\" ];\norg_junit_runners_model_TestClass -> MethodSorter [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_TestClass -> FrameworkMember [ label = \"14\" weight = \"14\" ];\norg_junit_runners_model_TestClass -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_TestClass -> MemberValueConsumer [ label = \"4\" weight = \"4\" ];\norg_junit_runners_model_TestClass_MethodComparator -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> BlockJUnit4ClassRunner [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> TestWithParameters [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_InjectionType [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunnerWithParameters -> ParentRunner [ label = \"8\" weight = \"8\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunnerWithParameters -> FrameworkField [ label = \"7\" weight = \"7\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_Parameterized_Parameter [ label = \"3\" weight = \"3\" ];\nBlockJUnit4ClassRunnerWithParameters -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParameters -> RunNotifier [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParameters -> Statement [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> RunBefores [ label = \"2\" weight = \"2\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> RunAfters [ label = \"2\" weight = \"2\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> ParametersRunnerFactory [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> TestWithParameters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> BlockJUnit4ClassRunnerWithParameters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> Runner [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> TestWithParameters [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> Runner [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nTestWithParameters -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nTestWithParameters -> Checks [ label = \"3\" weight = \"3\" ];\nParameterized -> Suite [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_UseParametersRunnerFactory -> ParametersRunnerFactory [ label = \"1\" weight = \"1\" ];\nParameterized -> org_junit_runners_Parameterized_RunnersFactory [ label = \"3\" weight = \"3\" ];\nParameterized -> ParentRunner [ label = \"2\" weight = \"2\" ];\nParameterized -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\nParameterized -> InvalidTestClassError [ label = \"2\" weight = \"2\" ];\nParameterized -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Runner [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Failure [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> BlockJUnit4ClassRunnerWithParametersFactory [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> ParametersRunnerFactory [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_model_TestClass [ label = \"10\" weight = \"10\" ];\norg_junit_runners_Parameterized_RunnersFactory -> FrameworkMethod [ label = \"10\" weight = \"10\" ];\norg_junit_runners_Parameterized_RunnersFactory -> Runner [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_AssumptionViolationRunner [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_Parameters [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_UseParametersRunnerFactory [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> TestWithParameters [ label = \"8\" weight = \"8\" ];\norg_junit_runners_Parameterized_RunnersFactory -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nParentRunner -> Runner [ label = \"1\" weight = \"1\" ];\nParentRunner -> Filterable [ label = \"1\" weight = \"1\" ];\nParentRunner -> Orderable [ label = \"1\" weight = \"1\" ];\nParentRunner -> AnnotationsValidator [ label = \"1\" weight = \"1\" ];\nParentRunner -> TestClassValidator [ label = \"4\" weight = \"4\" ];\nParentRunner -> org_junit_runners_model_TestClass [ label = \"15\" weight = \"15\" ];\nParentRunner -> RunnerScheduler [ label = \"5\" weight = \"5\" ];\nParentRunner -> org_junit_runners_model_InitializationError [ label = \"3\" weight = \"3\" ];\nParentRunner -> Checks [ label = \"1\" weight = \"1\" ];\nParentRunner -> Description [ label = \"13\" weight = \"13\" ];\nParentRunner -> RunNotifier [ label = \"6\" weight = \"6\" ];\nParentRunner -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nParentRunner -> RuleMemberValidator [ label = \"2\" weight = \"2\" ];\nParentRunner -> Statement [ label = \"16\" weight = \"16\" ];\nParentRunner -> RunBefores [ label = \"1\" weight = \"1\" ];\nParentRunner -> RunAfters [ label = \"1\" weight = \"1\" ];\nParentRunner -> TestRule [ label = \"2\" weight = \"2\" ];\nParentRunner -> RunRules [ label = \"1\" weight = \"1\" ];\nParentRunner -> org_junit_runners_ParentRunner_ClassRuleCollector [ label = \"3\" weight = \"3\" ];\nParentRunner -> EachTestNotifier [ label = \"12\" weight = \"12\" ];\nParentRunner -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nParentRunner -> StoppedByUserException [ label = \"1\" weight = \"1\" ];\nParentRunner -> Filter [ label = \"4\" weight = \"4\" ];\nParentRunner -> NoTestsRemainException [ label = \"3\" weight = \"3\" ];\nParentRunner -> Sorter [ label = \"4\" weight = \"4\" ];\nParentRunner -> Orderer [ label = \"3\" weight = \"3\" ];\nParentRunner -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nParentRunner -> InvalidTestClassError [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> MemberValueConsumer [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> TestRule [ label = \"6\" weight = \"6\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> org_junit_runners_RuleContainer_RuleEntry [ label = \"4\" weight = \"4\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> ClassRule [ label = \"2\" weight = \"2\" ];\nRuleContainer -> TestRule [ label = \"6\" weight = \"6\" ];\nRuleContainer -> MethodRule [ label = \"6\" weight = \"6\" ];\nRuleContainer -> org_junit_runners_RuleContainer_RuleEntry [ label = \"10\" weight = \"10\" ];\nRuleContainer -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nRuleContainer -> Description [ label = \"1\" weight = \"1\" ];\nRuleContainer -> Statement [ label = \"3\" weight = \"3\" ];\nSuite -> Runner [ label = \"9\" weight = \"9\" ];\nSuite -> ParentRunner [ label = \"2\" weight = \"2\" ];\nSuite -> org_junit_runners_model_InitializationError [ label = \"8\" weight = \"8\" ];\nSuite -> org_junit_runners_Suite_SuiteClasses [ label = \"2\" weight = \"2\" ];\nSuite -> RunnerBuilder [ label = \"5\" weight = \"5\" ];\nSuite -> AllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\nSuite -> Description [ label = \"1\" weight = \"1\" ];\nSuite -> RunNotifier [ label = \"1\" weight = \"1\" ];\nTestCouldNotBeSkippedException -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> TestClassValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_ClassValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_MethodValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_FieldValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"4\" weight = \"4\" ];\nAnnotationsValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> Annotatable [ label = \"7\" weight = \"7\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> AnnotationValidatorFactory [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> ValidateWith [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> FrameworkMethod [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> FrameworkField [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\nAnnotationValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nAnnotationValidator -> FrameworkField [ label = \"1\" weight = \"1\" ];\nAnnotationValidator -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nAnnotationValidatorFactory -> ValidateWith [ label = \"4\" weight = \"4\" ];\nAnnotationValidatorFactory -> AnnotationValidator [ label = \"6\" weight = \"6\" ];\nPublicClassValidator -> TestClassValidator [ label = \"1\" weight = \"1\" ];\nPublicClassValidator -> org_junit_runners_model_TestClass [ label = \"3\" weight = \"3\" ];\nTestClassValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nValidateWith -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\" label=\"ClassRequest$CustomSuiteMethodBuilder\"];\nRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" color=red style=filled];\nIncludeCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/IncludeCategories.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$AnnotatableValidator\"];\nParameterSignature [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParameterSignature.java\" target=\"_blank\"];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedException.java\" target=\"_blank\" label=\"ExpectedException$ExpectedExceptionStatement\"];\nNullBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/NullBuilder.java\" target=\"_blank\"];\nOrdering [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\"];\nTestSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestSuite.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_FieldValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$FieldValidator\"];\norg_junit_ComparisonFailure_ComparisonCompactor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\" label=\"ComparisonFailure$ComparisonCompactor\" color=red style=filled];\norg_junit_experimental_categories_Categories_IncludeCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$IncludeCategory\"];\nExpectedExceptionMatcherBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedExceptionMatcherBuilder.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$DeclaringClassMustBePublic\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_InjectionType [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$InjectionType\"];\nSortingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/SortingRequest.java\" target=\"_blank\"];\nTestSetup [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/TestSetup.java\" target=\"_blank\"];\nArrayComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ArrayComparisonFailure.java\" target=\"_blank\"];\norg_junit_runner_Request_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" label=\"Request$1\"];\norg_junit_runner_Computer_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Computer.java\" target=\"_blank\" label=\"Computer$1\"];\nErrorCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ErrorCollector.java\" target=\"_blank\"];\norg_junit_internal_runners_InitializationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/InitializationError.java\" target=\"_blank\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$RunAfterParams\"];\nVerifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Verifier.java\" target=\"_blank\"];\nThrowingRunnable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/function/ThrowingRunnable.java\" target=\"_blank\"];\nExternalResource [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExternalResource.java\" target=\"_blank\"];\nFailureList [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/FailureList.java\" target=\"_blank\"];\nResultPrinter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/textui/ResultPrinter.java\" target=\"_blank\"];\nReflectiveRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveRuntimeMXBean.java\" target=\"_blank\"];\norg_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\" label=\"ComparisonFailure$ComparisonCompactor$DiffExtractor\"];\nValidationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/ValidationError.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBeStatic\"];\nSuiteMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/SuiteMethod.java\" target=\"_blank\"];\nSerializableMatcherDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/SerializableMatcherDescription.java\" target=\"_blank\"];\nRunWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/RunWith.java\" target=\"_blank\"];\nPrintableResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/PrintableResult.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_ThreadHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$ThreadHolder\"];\nInvokeMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/InvokeMethod.java\" target=\"_blank\"];\nFakeRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/FakeRuntimeMXBean.java\" target=\"_blank\"];\nActiveTestSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/ActiveTestSuite.java\" target=\"_blank\"];\nTheories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\"];\nComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ComparisonCriteria.java\" target=\"_blank\"];\nClassRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\"];\nTimeout [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Timeout.java\" target=\"_blank\" color=red style=filled];\nTestCase [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestCase.java\" target=\"_blank\"];\norg_junit_AssumptionViolatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/AssumptionViolatedException.java\" target=\"_blank\"];\norg_junit_experimental_categories_IncludeCategories_IncludesAny [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/IncludeCategories.java\" target=\"_blank\" label=\"IncludeCategories$IncludesAny\"];\nFilter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filter.java\" target=\"_blank\" color=red style=filled];\norg_junit_internal_runners_statements_FailOnTimeout_CallableStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" label=\"FailOnTimeout$CallableStatement\"];\norg_junit_runner_notification_RunNotifier_SafeNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunNotifier.java\" target=\"_blank\" label=\"RunNotifier$SafeNotifier\"];\norg_junit_runner_notification_RunListener_ThreadSafe [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunListener.java\" target=\"_blank\" label=\"RunListener$ThreadSafe\"];\norg_junit_Test [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Test.java\" target=\"_blank\"];\nJUnit4TestCaseFacade [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestCaseFacade.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_Parameter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$Parameter\"];\nFilterRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/FilterRequest.java\" target=\"_blank\"];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java\" target=\"_blank\" label=\"AllMembersSupplier$MethodParameterValue\"];\nCategoryValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/CategoryValidator.java\" target=\"_blank\"];\norg_junit_experimental_categories_Categories_ExcludeCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$ExcludeCategory\"];\norg_junit_ComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\"];\nMethodSorters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/MethodSorters.java\" target=\"_blank\"];\nRunnerBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/RunnerBuilder.java\" target=\"_blank\" color=red style=filled];\nChecks [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Checks.java\" target=\"_blank\"];\nFilterable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filterable.java\" target=\"_blank\"];\nManagementFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_MethodValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$MethodValidator\"];\nRunRules [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/RunRules.java\" target=\"_blank\"];\nMethodSorter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/MethodSorter.java\" target=\"_blank\"];\nThrowables [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\"];\nEachTestNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/EachTestNotifier.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State_4 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$4\"];\norg_junit_internal_Throwables_State_3 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$3\"];\norg_junit_internal_Throwables_State_2 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$2\"];\nRunListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunListener.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$1\"];\nTestFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestFailure.java\" target=\"_blank\"];\nDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Description.java\" target=\"_blank\"];\nAnnotationValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationValidator.java\" target=\"_blank\"];\nFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/Failure.java\" target=\"_blank\" color=red style=filled];\nInvalidTestClassError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/InvalidTestClassError.java\" target=\"_blank\"];\nValidateWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/ValidateWith.java\" target=\"_blank\"];\norg_junit_runner_Result_SerializedForm [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\" label=\"Result$SerializedForm\"];\norg_junit_runners_Parameterized_RunnersFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$RunnersFactory\"];\nFailOnTimeout [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" color=red style=filled];\nAllDefaultPossibilitiesBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/AllDefaultPossibilitiesBuilder.java\" target=\"_blank\"];\norg_junit_runner_manipulation_Ordering_Factory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$Factory\"];\nDisableOnDebug [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/DisableOnDebug.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_AssumptionViolationRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$AssumptionViolationRunner\"];\nNoGenericTypeParametersValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/NoGenericTypeParametersValidator.java\" target=\"_blank\"];\nStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/Statement.java\" target=\"_blank\" color=red style=filled];\njunit_framework_Test [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Test.java\" target=\"_blank\" color=red style=filled];\nJUnitMatchers [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/matchers/JUnitMatchers.java\" target=\"_blank\"];\nMemberValueConsumer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/MemberValueConsumer.java\" target=\"_blank\"];\nJUnit4TestAdapter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestAdapter.java\" target=\"_blank\" color=red style=filled];\norg_junit_experimental_categories_Categories_CategoryFilter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$CategoryFilter\"];\nFakeThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/FakeThreadMXBean.java\" target=\"_blank\"];\norg_junit_internal_runners_TestClass [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/TestClass.java\" target=\"_blank\"];\nInvalidOrderingException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/InvalidOrderingException.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_FactoryHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$FactoryHolder\"];\nParallelComputer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/ParallelComputer.java\" target=\"_blank\"];\nStacktracePrintingMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java\" target=\"_blank\"];\norg_junit_internal_runners_statements_FailOnTimeout_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" label=\"FailOnTimeout$Builder\"];\norg_junit_runner_JUnitCommandLineParseResult_CommandLineParserError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\" label=\"JUnitCommandLineParseResult$CommandLineParserError\"];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunner$RuleCollector\"];\nExcludeCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/ExcludeCategories.java\" target=\"_blank\"];\nMethodValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/MethodValidator.java\" target=\"_blank\"];\norg_junit_experimental_theories_Theories_TheoryAnchor_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\" label=\"Theories$TheoryAnchor$1\"];\norg_junit_runner_Result_Listener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\" label=\"Result$Listener\"];\nExactComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ExactComparisonCriteria.java\" target=\"_blank\"];\nAnnotationsValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\"];\nAssume [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Assume.java\" target=\"_blank\"];\nTestCouldNotBeSkippedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/TestCouldNotBeSkippedException.java\" target=\"_blank\"];\nJUnitSystem [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/JUnitSystem.java\" target=\"_blank\"];\nBlockJUnit4ClassRunnerWithParametersFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParametersFactory.java\" target=\"_blank\"];\nClassRoadie [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/ClassRoadie.java\" target=\"_blank\"];\norg_junit_rules_Stopwatch_Clock [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" label=\"Stopwatch$Clock\"];\nJUnit3Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/JUnit3Builder.java\" target=\"_blank\"];\nFrameworkMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkMethod.java\" target=\"_blank\" color=red style=filled];\nIgnoredBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/IgnoredBuilder.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State\"];\nTestTimedOutException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestTimedOutException.java\" target=\"_blank\"];\nSpecificDataPointsSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java\" target=\"_blank\" color=red style=filled];\nJUnit4 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/JUnit4.java\" target=\"_blank\"];\nJUnitCommandLineParseResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\"];\njunit_framework_Assert [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Assert.java\" target=\"_blank\" color=red style=filled];\nOrderWithValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/OrderWithValidator.java\" target=\"_blank\"];\nParametersRunnerFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/ParametersRunnerFactory.java\" target=\"_blank\"];\nTestDecorator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/TestDecorator.java\" target=\"_blank\"];\nParametersSuppliedBy [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParametersSuppliedBy.java\" target=\"_blank\"];\nMemoizingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/MemoizingRequest.java\" target=\"_blank\"];\nTestClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/TestClassValidator.java\" target=\"_blank\"];\nResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\"];\nJUnitCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCore.java\" target=\"_blank\"];\norg_junit_experimental_theories_Theories_TheoryAnchor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\" label=\"Theories$TheoryAnchor\"];\nTestRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/textui/TestRunner.java\" target=\"_blank\"];\nInexactComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/InexactComparisonCriteria.java\" target=\"_blank\"];\nRunnerScheduler [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/RunnerScheduler.java\" target=\"_blank\"];\norg_junit_internal_AssumptionViolatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/AssumptionViolatedException.java\" target=\"_blank\"];\nFilterFactories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactories.java\" target=\"_blank\"];\nParameterSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParameterSupplier.java\" target=\"_blank\"];\nThrowableMessageMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java\" target=\"_blank\"];\nMaxCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxCore.java\" target=\"_blank\"];\nReflectiveThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveThreadMXBean.java\" target=\"_blank\"];\nRuleContainer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/RuleContainer.java\" target=\"_blank\"];\nBlockJUnit4ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java\" target=\"_blank\" color=red style=filled];\norg_junit_runner_FilterFactory_FilterNotCreatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactory.java\" target=\"_blank\" label=\"FilterFactory$FilterNotCreatedException\"];\njunit_framework_ComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/ComparisonFailure.java\" target=\"_blank\"];\nFrameworkMember [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkMember.java\" target=\"_blank\"];\nClassRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ClassRule.java\" target=\"_blank\"];\nTheory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theory.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MethodMustBeARule\"];\nJUnit4Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/JUnit4Builder.java\" target=\"_blank\"];\nSuiteMethodBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/SuiteMethodBuilder.java\" target=\"_blank\"];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java\" target=\"_blank\" label=\"JUnit38ClassRunner$OldTestClassAdaptingListener\"];\nTestWithParameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/TestWithParameters.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_UseParametersRunnerFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$UseParametersRunnerFactory\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBePublic\"];\nCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Category.java\" target=\"_blank\"];\nTestWatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestWatcher.java\" target=\"_blank\"];\nMethodRoadie [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/MethodRoadie.java\" target=\"_blank\"];\nSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Suite.java\" target=\"_blank\"];\nAssignments [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/Assignments.java\" target=\"_blank\"];\nIgnoredClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/IgnoredClassRunner.java\" target=\"_blank\"];\nTestedOnSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/suppliers/TestedOnSupplier.java\" target=\"_blank\" color=red style=filled];\nTypeSafeMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/TypeSafeMatcher.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$FieldMustBeARule\"];\nFixMethodOrder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/FixMethodOrder.java\" target=\"_blank\"];\nFailedBefore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/FailedBefore.java\" target=\"_blank\"];\nRealSystem [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/RealSystem.java\" target=\"_blank\"];\nFrameworkField [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkField.java\" target=\"_blank\"];\nThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ThreadMXBean.java\" target=\"_blank\"];\norg_junit_internal_management_ReflectiveThreadMXBean_Holder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveThreadMXBean.java\" target=\"_blank\" label=\"ReflectiveThreadMXBean$Holder\"];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\" label=\"ClassRequest$CustomAllDefaultPossibilitiesBuilder\"];\nRunAfters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/RunAfters.java\" target=\"_blank\"];\nStopwatch [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" color=red style=filled];\norg_junit_experimental_max_MaxHistory_RememberingListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" label=\"MaxHistory$RememberingListener\"];\norg_junit_runners_model_MultipleFailureException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/MultipleFailureException.java\" target=\"_blank\"];\nOrderable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Orderable.java\" target=\"_blank\"];\nParameterizedAssertionError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/ParameterizedAssertionError.java\" target=\"_blank\"];\nAnnotatable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/Annotatable.java\" target=\"_blank\"];\nTestWatchman [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestWatchman.java\" target=\"_blank\"];\nDescribable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Describable.java\" target=\"_blank\"];\nRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Runner.java\" target=\"_blank\"];\nTestName [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestName.java\" target=\"_blank\"];\nBooleanSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/BooleanSupplier.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$FieldMustBeATestRule\"];\norg_junit_runners_model_InitializationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/InitializationError.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$RuleValidator\"];\nCategoryFilterFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/CategoryFilterFactory.java\" target=\"_blank\"];\nTextListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/TextListener.java\" target=\"_blank\"];\nTestMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/TestMethod.java\" target=\"_blank\"];\norg_junit_runners_ParentRunner_ClassRuleCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/ParentRunner.java\" target=\"_blank\" label=\"ParentRunner$ClassRuleCollector\"];\norg_junit_runners_Parameterized_Parameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$Parameters\"];\nAssertionFailedError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/AssertionFailedError.java\" target=\"_blank\"];\nPublicClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/PublicClassValidator.java\" target=\"_blank\"];\norg_junit_experimental_categories_ExcludeCategories_ExcludesAny [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/ExcludeCategories.java\" target=\"_blank\" label=\"ExcludeCategories$ExcludesAny\"];\nJUnit4TestAdapterCache [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestAdapterCache.java\" target=\"_blank\"];\nEnumSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/EnumSupplier.java\" target=\"_blank\"];\nTestListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestListener.java\" target=\"_blank\"];\nParentRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/ParentRunner.java\" target=\"_blank\"];\nEnclosed [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/runners/Enclosed.java\" target=\"_blank\"];\norg_junit_Assert [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Assert.java\" target=\"_blank\"];\norg_junit_experimental_max_MaxCore_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxCore.java\" target=\"_blank\" label=\"MaxCore$1\"];\nProtectable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Protectable.java\" target=\"_blank\"];\nJUnit4ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java\" target=\"_blank\"];\nFilterFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactory.java\" target=\"_blank\"];\norg_junit_rules_Timeout_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Timeout.java\" target=\"_blank\" label=\"Timeout$Builder\"];\norg_junit_runner_manipulation_Ordering_Context [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$Context\"];\nMethodRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/MethodRule.java\" target=\"_blank\"];\norg_junit_rules_Stopwatch_InternalWatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" label=\"Stopwatch$InternalWatcher\"];\nComparisonCompactor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/ComparisonCompactor.java\" target=\"_blank\"];\norg_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/PotentialAssignment.java\" target=\"_blank\" label=\"PotentialAssignment$CouldNotGenerateValueException\"];\nOrderWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/OrderWith.java\" target=\"_blank\"];\nFilterFactoryParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactoryParams.java\" target=\"_blank\"];\norg_junit_runners_model_TestClass [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" color=red style=filled];\nClasses [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Classes.java\" target=\"_blank\"];\nDataPoint [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/DataPoint.java\" target=\"_blank\"];\nSortable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Sortable.java\" target=\"_blank\"];\nComputer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Computer.java\" target=\"_blank\"];\norg_junit_runners_model_TestClass_FieldComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" label=\"TestClass$FieldComparator\"];\nTestResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestResult.java\" target=\"_blank\"];\nBaseTestRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/runner/BaseTestRunner.java\" target=\"_blank\"];\nSynchronizedRunListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/SynchronizedRunListener.java\" target=\"_blank\"];\nSerializableValueDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/SerializableValueDescription.java\" target=\"_blank\"];\nAnnotatedBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/AnnotatedBuilder.java\" target=\"_blank\"];\nAlphanumeric [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Alphanumeric.java\" target=\"_blank\"];\nRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/RuntimeMXBean.java\" target=\"_blank\"];\nFail [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/Fail.java\" target=\"_blank\"];\nParameterized [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_ClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$ClassValidator\"];\nSorter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Sorter.java\" target=\"_blank\" color=red style=filled];\nBlockJUnit4ClassRunnerWithParameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\"];\nErrorReportingRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/ErrorReportingRunner.java\" target=\"_blank\"];\nResultMatchers [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/ResultMatchers.java\" target=\"_blank\"];\nAllTests [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/AllTests.java\" target=\"_blank\"];\norg_junit_runners_Suite_SuiteClasses [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Suite.java\" target=\"_blank\" label=\"Suite$SuiteClasses\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$RunBeforeParams\"];\nNoTestsRemainException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/NoTestsRemainException.java\" target=\"_blank\"];\nAllMembersSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java\" target=\"_blank\" color=red style=filled];\nFromDataPoints [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/FromDataPoints.java\" target=\"_blank\"];\nStoppedByUserException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/StoppedByUserException.java\" target=\"_blank\"];\nTestedOn [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/suppliers/TestedOn.java\" target=\"_blank\"];\nRuleMemberValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\"];\nDataPoints [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/DataPoints.java\" target=\"_blank\"];\nCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" color=red style=filled];\nMaxHistory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" color=red style=filled];\nTestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestRule.java\" target=\"_blank\"];\nRunBefores [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/RunBefores.java\" target=\"_blank\"];\nJUnit38ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java\" target=\"_blank\" color=red style=filled];\nOrderer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Orderer.java\" target=\"_blank\" color=red style=filled];\norg_junit_runner_manipulation_Filter_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filter.java\" target=\"_blank\" label=\"Filter$1\"];\nRepeatedTest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/RepeatedTest.java\" target=\"_blank\"];\nPotentialAssignment [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/PotentialAssignment.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_RuntimeHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$RuntimeHolder\"];\nAnnotationValidatorFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationValidatorFactory.java\" target=\"_blank\"];\norg_junit_rules_TemporaryFolder_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TemporaryFolder.java\" target=\"_blank\" label=\"TemporaryFolder$Builder\"];\norg_junit_internal_management_ReflectiveRuntimeMXBean_Holder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveRuntimeMXBean.java\" target=\"_blank\" label=\"ReflectiveRuntimeMXBean$Holder\"];\nExpectedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedException.java\" target=\"_blank\" color=red style=filled];\norg_junit_runners_RuleContainer_RuleEntry [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/RuleContainer.java\" target=\"_blank\" label=\"RuleContainer$RuleEntry\"];\norg_junit_internal_runners_model_MultipleFailureException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/MultipleFailureException.java\" target=\"_blank\"];\nVersion [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/runner/Version.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MethodMustBeATestRule\"];\norg_junit_experimental_max_MaxHistory_TestComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" label=\"MaxHistory$TestComparator\"];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$Builder\"];\norg_junit_runners_model_TestClass_MethodComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" label=\"TestClass$MethodComparator\"];\nExpectException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/ExpectException.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule\"];\norg_junit_runner_manipulation_Ordering_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$1\"];\nReflectiveCallable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/ReflectiveCallable.java\" target=\"_blank\"];\nRuleChain [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/RuleChain.java\" target=\"_blank\"];\nCouldNotReadCoreException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/CouldNotReadCoreException.java\" target=\"_blank\"];\nRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Rule.java\" target=\"_blank\"];\nThrowableCauseMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java\" target=\"_blank\"];\nOrderingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/OrderingRequest.java\" target=\"_blank\"];\nRunNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunNotifier.java\" target=\"_blank\"];\nTemporaryFolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TemporaryFolder.java\" target=\"_blank\" color=red style=filled];\n}",
- "hasEdges" : false
+ "classMap": {
+ "graphId": "classGraph",
+ "classCount": 335,
+ "relationshipCount": 934,
+ "dotThreshold": 4000,
+ "dotThresholdExceeded": false,
+ "dot": "strict digraph G {\nActiveTestSuite -> TestSuite [ label = \"6\" weight = \"6\" ];\nActiveTestSuite -> TestCase [ label = \"2\" weight = \"2\" ];\nActiveTestSuite -> TestResult [ label = \"2\" weight = \"2\" ];\nActiveTestSuite -> junit_framework_Test [ label = \"2\" weight = \"2\" ];\nRepeatedTest -> TestDecorator [ label = \"5\" weight = \"5\" ];\nRepeatedTest -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nRepeatedTest -> TestResult [ label = \"2\" weight = \"2\" ];\nTestDecorator -> junit_framework_Assert [ label = \"1\" weight = \"1\" ];\nTestDecorator -> junit_framework_Test [ label = \"7\" weight = \"7\" ];\nTestDecorator -> TestResult [ label = \"2\" weight = \"2\" ];\nTestSetup -> TestDecorator [ label = \"3\" weight = \"3\" ];\nTestSetup -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nTestSetup -> TestResult [ label = \"2\" weight = \"2\" ];\nTestSetup -> Protectable [ label = \"1\" weight = \"1\" ];\njunit_framework_Assert -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\njunit_framework_Assert -> junit_framework_ComparisonFailure [ label = \"1\" weight = \"1\" ];\nComparisonCompactor -> junit_framework_Assert [ label = \"2\" weight = \"2\" color = \"red\" ];\njunit_framework_ComparisonFailure -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\njunit_framework_ComparisonFailure -> ComparisonCompactor [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> junit_framework_Test [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> Filterable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Orderable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Describable [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Runner [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapter -> JUnit4TestAdapterCache [ label = \"5\" weight = \"5\" color = \"red\" ];\nJUnit4TestAdapter -> Request [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> TestResult [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Description [ label = \"13\" weight = \"13\" ];\nJUnit4TestAdapter -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapter -> Sorter [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> Orderer [ label = \"2\" weight = \"2\" ];\nJUnit4TestAdapter -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> junit_framework_Test [ label = \"6\" weight = \"6\" ];\nJUnit4TestAdapterCache -> Description [ label = \"14\" weight = \"14\" ];\nJUnit4TestAdapterCache -> JUnit4TestCaseFacade [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> TestSuite [ label = \"3\" weight = \"3\" ];\nJUnit4TestAdapterCache -> TestResult [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapterCache -> JUnit4TestAdapter [ label = \"1\" weight = \"1\" ];\nJUnit4TestAdapterCache -> RunNotifier [ label = \"4\" weight = \"4\" ];\nJUnit4TestAdapterCache -> Failure [ label = \"3\" weight = \"3\" ];\nJUnit4TestCaseFacade -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nJUnit4TestCaseFacade -> Describable [ label = \"1\" weight = \"1\" ];\nJUnit4TestCaseFacade -> Description [ label = \"4\" weight = \"4\" ];\nJUnit4TestCaseFacade -> TestResult [ label = \"1\" weight = \"1\" ];\njunit_framework_Test -> TestResult [ label = \"1\" weight = \"1\" color = \"red\" ];\nTestCase -> junit_framework_Assert [ label = \"39\" weight = \"39\" ];\nTestCase -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nTestCase -> TestResult [ label = \"6\" weight = \"6\" color = \"red\" ];\nTestFailure -> junit_framework_Test [ label = \"3\" weight = \"3\" ];\nTestFailure -> Throwables [ label = \"1\" weight = \"1\" ];\nTestFailure -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestListener -> junit_framework_Test [ label = \"4\" weight = \"4\" ];\nTestListener -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestResult -> TestFailure [ label = \"8\" weight = \"8\" ];\nTestResult -> TestListener [ label = \"15\" weight = \"15\" ];\nTestResult -> junit_framework_Test [ label = \"6\" weight = \"6\" ];\nTestResult -> AssertionFailedError [ label = \"2\" weight = \"2\" ];\nTestResult -> TestCase [ label = \"2\" weight = \"2\" ];\nTestResult -> Protectable [ label = \"3\" weight = \"3\" ];\nTestSuite -> junit_framework_Test [ label = \"15\" weight = \"15\" ];\nTestSuite -> TestCase [ label = \"7\" weight = \"7\" ];\nTestSuite -> Throwables [ label = \"3\" weight = \"3\" ];\nTestSuite -> MethodSorter [ label = \"1\" weight = \"1\" ];\nTestSuite -> TestResult [ label = \"3\" weight = \"3\" ];\nBaseTestRunner -> TestListener [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> junit_framework_Test [ label = \"10\" weight = \"10\" ];\nBaseTestRunner -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> TestSuite [ label = \"1\" weight = \"1\" ];\nBaseTestRunner -> Throwables [ label = \"1\" weight = \"1\" ];\nResultPrinter -> TestListener [ label = \"1\" weight = \"1\" ];\nResultPrinter -> TestResult [ label = \"14\" weight = \"14\" ];\nResultPrinter -> TestFailure [ label = \"6\" weight = \"6\" ];\nResultPrinter -> BaseTestRunner [ label = \"1\" weight = \"1\" ];\nResultPrinter -> junit_framework_Test [ label = \"4\" weight = \"4\" ];\nResultPrinter -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nTestRunner -> BaseTestRunner [ label = \"4\" weight = \"4\" ];\nTestRunner -> ResultPrinter [ label = \"6\" weight = \"6\" ];\nTestRunner -> TestCase [ label = \"2\" weight = \"2\" ];\nTestRunner -> TestSuite [ label = \"2\" weight = \"2\" ];\nTestRunner -> junit_framework_Test [ label = \"8\" weight = \"8\" ];\nTestRunner -> TestResult [ label = \"11\" weight = \"11\" ];\nTestRunner -> Version [ label = \"1\" weight = \"1\" ];\norg_junit_Assert -> org_junit_ComparisonFailure [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_Assert -> ArrayComparisonFailure [ label = \"10\" weight = \"10\" ];\norg_junit_Assert -> InexactComparisonCriteria [ label = \"2\" weight = \"2\" ];\norg_junit_Assert -> ComparisonCriteria [ label = \"3\" weight = \"3\" ];\norg_junit_Assert -> ExactComparisonCriteria [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_Assert -> ThrowingRunnable [ label = \"3\" weight = \"3\" ];\nAssume -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_AssumptionViolatedException -> org_junit_internal_AssumptionViolatedException [ label = \"5\" weight = \"5\" ];\norg_junit_ComparisonFailure -> org_junit_ComparisonFailure_ComparisonCompactor [ label = \"2\" weight = \"2\" ];\norg_junit_ComparisonFailure_ComparisonCompactor -> org_junit_Assert [ label = \"2\" weight = \"2\" ];\norg_junit_ComparisonFailure_ComparisonCompactor -> org_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor [ label = \"6\" weight = \"6\" ];\norg_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor -> org_junit_ComparisonFailure_ComparisonCompactor [ label = \"2\" weight = \"2\" color = \"red\" ];\nCategories -> Suite [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Categories [ label = \"6\" weight = \"6\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Description [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> ValidateWith [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_categories_Categories_CategoryFilter -> Category [ label = \"2\" weight = \"2\" ];\nCategories -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nCategories -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"1\" weight = \"1\" color = \"red\" ];\nCategories -> ParentRunner [ label = \"1\" weight = \"1\" ];\nCategories -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nCategories -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nCategories -> org_junit_experimental_categories_Categories_IncludeCategory [ label = \"4\" weight = \"4\" ];\nCategories -> org_junit_experimental_categories_Categories_ExcludeCategory [ label = \"4\" weight = \"4\" ];\nCategory -> ValidateWith [ label = \"2\" weight = \"2\" ];\nCategory -> CategoryValidator [ label = \"1\" weight = \"1\" ];\nCategoryFilterFactory -> FilterFactory [ label = \"1\" weight = \"1\" ];\nCategoryFilterFactory -> FilterFactoryParams [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> Filter [ label = \"2\" weight = \"2\" ];\nCategoryFilterFactory -> Classes [ label = \"1\" weight = \"1\" ];\nCategoryValidator -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\nCategoryValidator -> FrameworkMethod [ label = \"2\" weight = \"2\" ];\nExcludeCategories -> CategoryFilterFactory [ label = \"1\" weight = \"1\" ];\nExcludeCategories -> org_junit_experimental_categories_ExcludeCategories_ExcludesAny [ label = \"1\" weight = \"1\" ];\nExcludeCategories -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_ExcludeCategories_ExcludesAny -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"3\" weight = \"3\" ];\nIncludeCategories -> CategoryFilterFactory [ label = \"1\" weight = \"1\" ];\nIncludeCategories -> org_junit_experimental_categories_IncludeCategories_IncludesAny [ label = \"1\" weight = \"1\" ];\nIncludeCategories -> Filter [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_categories_IncludeCategories_IncludesAny -> org_junit_experimental_categories_Categories_CategoryFilter [ label = \"3\" weight = \"3\" ];\nMaxCore -> MaxHistory [ label = \"4\" weight = \"4\" ];\nMaxCore -> Request [ label = \"14\" weight = \"14\" ];\nMaxCore -> Result [ label = \"3\" weight = \"3\" ];\nMaxCore -> JUnitCore [ label = \"4\" weight = \"4\" ];\nMaxCore -> SortingRequest [ label = \"1\" weight = \"1\" ];\nMaxCore -> Description [ label = \"22\" weight = \"22\" ];\nMaxCore -> Runner [ label = \"4\" weight = \"4\" ];\nMaxCore -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nMaxCore -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxCore_1 -> Runner [ label = \"1\" weight = \"1\" ];\nMaxCore -> org_junit_experimental_max_MaxCore_1 [ label = \"1\" weight = \"1\" ];\nMaxCore -> Suite [ label = \"1\" weight = \"1\" ];\nMaxCore -> TestSuite [ label = \"1\" weight = \"1\" ];\nMaxCore -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nMaxHistory -> CouldNotReadCoreException [ label = \"3\" weight = \"3\" ];\nMaxHistory -> Description [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Description [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> MaxHistory [ label = \"3\" weight = \"3\" color = \"red\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Failure [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_max_MaxHistory_RememberingListener -> Result [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_max_MaxHistory_TestComparator -> Description [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_max_MaxHistory_TestComparator -> MaxHistory [ label = \"5\" weight = \"5\" ];\nMaxHistory -> org_junit_experimental_max_MaxHistory_RememberingListener [ label = \"1\" weight = \"1\" ];\nMaxHistory -> RunListener [ label = \"1\" weight = \"1\" ];\nMaxHistory -> org_junit_experimental_max_MaxHistory_TestComparator [ label = \"1\" weight = \"1\" color = \"red\" ];\nParallelComputer -> Computer [ label = \"5\" weight = \"5\" ];\nParallelComputer -> Runner [ label = \"6\" weight = \"6\" ];\nParallelComputer -> ParentRunner [ label = \"3\" weight = \"3\" ];\nParallelComputer -> RunnerBuilder [ label = \"2\" weight = \"2\" ];\nParallelComputer -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nFailureList -> Failure [ label = \"3\" weight = \"3\" ];\nFailureList -> Result [ label = \"4\" weight = \"4\" ];\nFailureList -> RunListener [ label = \"2\" weight = \"2\" ];\nPrintableResult -> Result [ label = \"4\" weight = \"4\" ];\nPrintableResult -> Request [ label = \"2\" weight = \"2\" ];\nPrintableResult -> JUnitCore [ label = \"2\" weight = \"2\" ];\nPrintableResult -> Failure [ label = \"2\" weight = \"2\" ];\nPrintableResult -> FailureList [ label = \"2\" weight = \"2\" ];\nPrintableResult -> TextListener [ label = \"2\" weight = \"2\" ];\nResultMatchers -> PrintableResult [ label = \"8\" weight = \"8\" ];\nResultMatchers -> Failure [ label = \"1\" weight = \"1\" ];\nEnclosed -> Suite [ label = \"2\" weight = \"2\" ];\nEnclosed -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nFromDataPoints -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nFromDataPoints -> SpecificDataPointsSupplier [ label = \"1\" weight = \"1\" ];\nAllMembersSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> DataPoint [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> AllMembersSupplier [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> Assume [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"3\" weight = \"3\" ];\nAllMembersSupplier -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nAllMembersSupplier -> ParameterSignature [ label = \"17\" weight = \"17\" ];\nAllMembersSupplier -> PotentialAssignment [ label = \"13\" weight = \"13\" ];\nAllMembersSupplier -> FrameworkMethod [ label = \"9\" weight = \"9\" ];\nAllMembersSupplier -> DataPoints [ label = \"2\" weight = \"2\" ];\nAllMembersSupplier -> org_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue [ label = \"1\" weight = \"1\" ];\nAllMembersSupplier -> FrameworkField [ label = \"6\" weight = \"6\" ];\nAssignments -> PotentialAssignment [ label = \"11\" weight = \"11\" ];\nAssignments -> ParameterSignature [ label = \"13\" weight = \"13\" ];\nAssignments -> org_junit_runners_model_TestClass [ label = \"5\" weight = \"5\" ];\nAssignments -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"5\" weight = \"5\" ];\nAssignments -> ParameterSupplier [ label = \"5\" weight = \"5\" ];\nAssignments -> EnumSupplier [ label = \"2\" weight = \"2\" ];\nAssignments -> BooleanSupplier [ label = \"2\" weight = \"2\" ];\nAssignments -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nAssignments -> AllMembersSupplier [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nBooleanSupplier -> PotentialAssignment [ label = \"3\" weight = \"3\" ];\nEnumSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nEnumSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nEnumSupplier -> PotentialAssignment [ label = \"4\" weight = \"4\" ];\nSpecificDataPointsSupplier -> AllMembersSupplier [ label = \"6\" weight = \"6\" ];\nSpecificDataPointsSupplier -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nSpecificDataPointsSupplier -> ParameterSignature [ label = \"8\" weight = \"8\" ];\nSpecificDataPointsSupplier -> ParametersSuppliedBy [ label = \"4\" weight = \"4\" ];\nSpecificDataPointsSupplier -> FromDataPoints [ label = \"4\" weight = \"4\" color = \"red\" ];\nSpecificDataPointsSupplier -> DataPoint [ label = \"2\" weight = \"2\" ];\nSpecificDataPointsSupplier -> DataPoints [ label = \"2\" weight = \"2\" ];\nSpecificDataPointsSupplier -> FrameworkMethod [ label = \"12\" weight = \"12\" ];\nParametersSuppliedBy -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nParameterSupplier -> ParameterSignature [ label = \"1\" weight = \"1\" ];\nParameterSupplier -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\nPotentialAssignment -> org_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [ label = \"2\" weight = \"2\" ];\nTestedOn -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTestedOn -> TestedOnSupplier [ label = \"1\" weight = \"1\" ];\nTestedOnSupplier -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nTestedOnSupplier -> ParameterSignature [ label = \"2\" weight = \"2\" ];\nTestedOnSupplier -> PotentialAssignment [ label = \"4\" weight = \"4\" ];\nTestedOnSupplier -> TestedOn [ label = \"2\" weight = \"2\" color = \"red\" ];\nTestedOnSupplier -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTheories -> BlockJUnit4ClassRunner [ label = \"6\" weight = \"6\" ];\nTheories -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nTheories -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\nTheories -> ParentRunner [ label = \"4\" weight = \"4\" ];\nTheories -> FrameworkMethod [ label = \"11\" weight = \"11\" ];\nTheories -> ParameterSignature [ label = \"3\" weight = \"3\" ];\nTheories -> ParametersSuppliedBy [ label = \"2\" weight = \"2\" ];\nTheories -> ParameterSupplier [ label = \"1\" weight = \"1\" ];\nTheories -> org_junit_experimental_theories_Theories_TheoryAnchor [ label = \"1\" weight = \"1\" ];\nTheories -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Statement [ label = \"5\" weight = \"5\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> FrameworkMethod [ label = \"10\" weight = \"10\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_internal_AssumptionViolatedException [ label = \"4\" weight = \"4\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Assignments [ label = \"11\" weight = \"11\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> PotentialAssignment [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> BlockJUnit4ClassRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor_1 -> Statement [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Assume [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> ParentRunner [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> org_junit_experimental_theories_Theories_TheoryAnchor_1 [ label = \"2\" weight = \"2\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> ParameterizedAssertionError [ label = \"1\" weight = \"1\" ];\norg_junit_experimental_theories_Theories_TheoryAnchor -> Theory [ label = \"2\" weight = \"2\" ];\nFixMethodOrder -> MethodSorters [ label = \"1\" weight = \"1\" ];\norg_junit_internal_AssumptionViolatedException -> SerializableMatcherDescription [ label = \"1\" weight = \"1\" ];\norg_junit_internal_AssumptionViolatedException -> SerializableValueDescription [ label = \"1\" weight = \"1\" ];\nAllDefaultPossibilitiesBuilder -> RunnerBuilder [ label = \"5\" weight = \"5\" ];\nAllDefaultPossibilitiesBuilder -> Runner [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> JUnit4Builder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> JUnit3Builder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> AnnotatedBuilder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> IgnoredBuilder [ label = \"2\" weight = \"2\" ];\nAllDefaultPossibilitiesBuilder -> SuiteMethodBuilder [ label = \"1\" weight = \"1\" ];\nAllDefaultPossibilitiesBuilder -> NullBuilder [ label = \"1\" weight = \"1\" ];\nAnnotatedBuilder -> RunnerBuilder [ label = \"3\" weight = \"3\" ];\nAnnotatedBuilder -> RunWith [ label = \"2\" weight = \"2\" ];\nAnnotatedBuilder -> Runner [ label = \"3\" weight = \"3\" ];\nAnnotatedBuilder -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> IgnoredClassRunner [ label = \"1\" weight = \"1\" ];\nIgnoredBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nIgnoredClassRunner -> Runner [ label = \"1\" weight = \"1\" ];\nIgnoredClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nIgnoredClassRunner -> Description [ label = \"2\" weight = \"2\" ];\nJUnit3Builder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nJUnit3Builder -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nJUnit3Builder -> Runner [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> JUnit4 [ label = \"1\" weight = \"1\" ];\nJUnit4Builder -> Runner [ label = \"1\" weight = \"1\" ];\nNullBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nNullBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> SuiteMethod [ label = \"1\" weight = \"1\" ];\nSuiteMethodBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nComparisonCriteria -> ArrayComparisonFailure [ label = \"7\" weight = \"7\" ];\nComparisonCriteria -> org_junit_Assert [ label = \"3\" weight = \"3\" color = \"red\" ];\nExactComparisonCriteria -> ComparisonCriteria [ label = \"1\" weight = \"1\" ];\nExactComparisonCriteria -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nInexactComparisonCriteria -> ComparisonCriteria [ label = \"1\" weight = \"1\" ];\nInexactComparisonCriteria -> org_junit_Assert [ label = \"2\" weight = \"2\" color = \"red\" ];\nFakeRuntimeMXBean -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nFakeThreadMXBean -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_FactoryHolder -> Classes [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> org_junit_internal_management_ManagementFactory_FactoryHolder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> RuntimeMXBean [ label = \"2\" weight = \"2\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> ReflectiveRuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_RuntimeHolder -> FakeRuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> org_junit_internal_management_ManagementFactory_FactoryHolder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> ThreadMXBean [ label = \"2\" weight = \"2\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> ReflectiveThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ManagementFactory_ThreadHolder -> FakeThreadMXBean [ label = \"1\" weight = \"1\" ];\nManagementFactory -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nManagementFactory -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\nReflectiveRuntimeMXBean -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ReflectiveRuntimeMXBean_Holder -> Classes [ label = \"1\" weight = \"1\" ];\nReflectiveThreadMXBean -> ThreadMXBean [ label = \"1\" weight = \"1\" ];\norg_junit_internal_management_ReflectiveThreadMXBean_Holder -> Classes [ label = \"1\" weight = \"1\" ];\nStacktracePrintingMatcher -> Throwables [ label = \"1\" weight = \"1\" ];\nThrowableCauseMatcher -> TypeSafeMatcher [ label = \"1\" weight = \"1\" ];\nThrowableMessageMatcher -> TypeSafeMatcher [ label = \"1\" weight = \"1\" ];\nTypeSafeMatcher -> MethodSorter [ label = \"1\" weight = \"1\" ];\nMethodSorter -> FixMethodOrder [ label = \"2\" weight = \"2\" ];\nMethodSorter -> MethodSorters [ label = \"1\" weight = \"1\" ];\nRealSystem -> JUnitSystem [ label = \"1\" weight = \"1\" ];\nClassRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nClassRequest -> org_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\nClassRequest -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\nClassRequest -> Runner [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> AllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> org_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder -> RunnerBuilder [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder -> SuiteMethodBuilder [ label = \"2\" weight = \"2\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder -> Runner [ label = \"1\" weight = \"1\" ];\nFilterRequest -> Request [ label = \"4\" weight = \"4\" ];\nFilterRequest -> Filter [ label = \"4\" weight = \"4\" ];\nFilterRequest -> Runner [ label = \"2\" weight = \"2\" ];\nFilterRequest -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nFilterRequest -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nMemoizingRequest -> Request [ label = \"1\" weight = \"1\" color = \"red\" ];\nMemoizingRequest -> Runner [ label = \"3\" weight = \"3\" ];\nOrderingRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> Request [ label = \"3\" weight = \"3\" color = \"red\" ];\nOrderingRequest -> Ordering [ label = \"3\" weight = \"3\" ];\nOrderingRequest -> Runner [ label = \"2\" weight = \"2\" ];\nOrderingRequest -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nSortingRequest -> Request [ label = \"4\" weight = \"4\" ];\nSortingRequest -> Description [ label = \"2\" weight = \"2\" ];\nSortingRequest -> Runner [ label = \"2\" weight = \"2\" ];\nSortingRequest -> Sorter [ label = \"2\" weight = \"2\" ];\nClassRoadie -> RunNotifier [ label = \"3\" weight = \"3\" ];\nClassRoadie -> org_junit_internal_runners_TestClass [ label = \"4\" weight = \"4\" ];\nClassRoadie -> Description [ label = \"2\" weight = \"2\" ];\nClassRoadie -> Failure [ label = \"1\" weight = \"1\" ];\nClassRoadie -> FailedBefore [ label = \"4\" weight = \"4\" ];\nClassRoadie -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> Runner [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> Description [ label = \"7\" weight = \"7\" ];\nErrorReportingRunner -> RunNotifier [ label = \"5\" weight = \"5\" ];\nErrorReportingRunner -> InvalidTestClassError [ label = \"1\" weight = \"1\" ];\nErrorReportingRunner -> org_junit_runners_model_InitializationError [ label = \"3\" weight = \"3\" ];\nErrorReportingRunner -> org_junit_internal_runners_InitializationError [ label = \"3\" weight = \"3\" ];\nErrorReportingRunner -> Failure [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Runner [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> Filterable [ label = \"5\" weight = \"5\" ];\nJUnit38ClassRunner -> Orderable [ label = \"5\" weight = \"5\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> TestListener [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> RunNotifier [ label = \"5\" weight = \"5\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> junit_framework_Test [ label = \"10\" weight = \"10\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Failure [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Describable [ label = \"4\" weight = \"4\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> Description [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> TestCase [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener -> AssertionFailedError [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> junit_framework_Test [ label = \"8\" weight = \"8\" ];\nJUnit38ClassRunner -> TestSuite [ label = \"21\" weight = \"21\" ];\nJUnit38ClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> TestResult [ label = \"3\" weight = \"3\" ];\nJUnit38ClassRunner -> org_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> TestListener [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Description [ label = \"8\" weight = \"8\" ];\nJUnit38ClassRunner -> TestCase [ label = \"6\" weight = \"6\" ];\nJUnit38ClassRunner -> Describable [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> TestDecorator [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> NoTestsRemainException [ label = \"2\" weight = \"2\" ];\nJUnit38ClassRunner -> Sorter [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> Sortable [ label = \"4\" weight = \"4\" ];\nJUnit38ClassRunner -> Orderer [ label = \"1\" weight = \"1\" ];\nJUnit38ClassRunner -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Runner [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Filterable [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Sortable [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> org_junit_internal_runners_TestClass [ label = \"8\" weight = \"8\" ];\nJUnit4ClassRunner -> org_junit_internal_runners_InitializationError [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> MethodValidator [ label = \"4\" weight = \"4\" ];\nJUnit4ClassRunner -> RunNotifier [ label = \"7\" weight = \"7\" ];\nJUnit4ClassRunner -> ClassRoadie [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Description [ label = \"8\" weight = \"8\" ];\nJUnit4ClassRunner -> TestMethod [ label = \"3\" weight = \"3\" ];\nJUnit4ClassRunner -> MethodRoadie [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Failure [ label = \"1\" weight = \"1\" ];\nJUnit4ClassRunner -> Filter [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> NoTestsRemainException [ label = \"2\" weight = \"2\" ];\nJUnit4ClassRunner -> Sorter [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> RunNotifier [ label = \"6\" weight = \"6\" ];\nMethodRoadie -> Description [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> TestMethod [ label = \"12\" weight = \"12\" ];\nMethodRoadie -> TestTimedOutException [ label = \"1\" weight = \"1\" ];\nMethodRoadie -> FailedBefore [ label = \"4\" weight = \"4\" ];\nMethodRoadie -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nMethodRoadie -> Failure [ label = \"1\" weight = \"1\" ];\nMethodValidator -> org_junit_internal_runners_TestClass [ label = \"5\" weight = \"5\" ];\nMethodValidator -> org_junit_internal_runners_InitializationError [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> RunNotifier [ label = \"9\" weight = \"9\" ];\nEachTestNotifier -> Description [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> org_junit_runners_model_MultipleFailureException [ label = \"4\" weight = \"4\" ];\nEachTestNotifier -> Failure [ label = \"2\" weight = \"2\" ];\nEachTestNotifier -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_model_MultipleFailureException -> org_junit_runners_model_MultipleFailureException [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_Builder [ label = \"25\" weight = \"25\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic [ label = \"4\" weight = \"4\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule [ label = \"1\" weight = \"1\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule [ label = \"2\" weight = \"2\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule [ label = \"1\" weight = \"1\" color = \"red\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule [ label = \"1\" weight = \"1\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule [ label = \"1\" weight = \"1\" color = \"red\" ];\nRuleMemberValidator -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"3\" weight = \"3\" ];\nRuleMemberValidator -> org_junit_runners_model_TestClass [ label = \"3\" weight = \"3\" ];\nRuleMemberValidator -> FrameworkMember [ label = \"8\" weight = \"8\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder -> RuleMemberValidator [ label = \"2\" weight = \"2\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_RuleValidator -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> RuleMemberValidator [ label = \"2\" weight = \"2\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> FrameworkMember [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> FrameworkMember [ label = \"2\" weight = \"2\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> RuleMemberValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> RuleMemberValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> RuleMemberValidator [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule -> ValidationError [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> org_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> RuleMemberValidator [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule -> ValidationError [ label = \"1\" weight = \"1\" ];\nValidationError -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nExpectException -> Statement [ label = \"4\" weight = \"4\" ];\nExpectException -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nFail -> Statement [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> Statement [ label = \"4\" weight = \"4\" ];\nFailOnTimeout -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"4\" weight = \"4\" ];\norg_junit_internal_runners_statements_FailOnTimeout_Builder -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_internal_runners_statements_FailOnTimeout_Builder -> FailOnTimeout [ label = \"2\" weight = \"2\" color = \"red\" ];\nFailOnTimeout -> org_junit_internal_runners_statements_FailOnTimeout_CallableStatement [ label = \"3\" weight = \"3\" ];\nFailOnTimeout -> TestTimedOutException [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> ManagementFactory [ label = \"1\" weight = \"1\" ];\nFailOnTimeout -> ThreadMXBean [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_statements_FailOnTimeout_CallableStatement -> Statement [ label = \"1\" weight = \"1\" ];\nInvokeMethod -> Statement [ label = \"1\" weight = \"1\" ];\nInvokeMethod -> FrameworkMethod [ label = \"3\" weight = \"3\" ];\nRunAfters -> Statement [ label = \"4\" weight = \"4\" ];\nRunAfters -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nRunAfters -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nRunBefores -> Statement [ label = \"4\" weight = \"4\" ];\nRunBefores -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nSuiteMethod -> JUnit38ClassRunner [ label = \"2\" weight = \"2\" ];\nSuiteMethod -> junit_framework_Test [ label = \"3\" weight = \"3\" ];\norg_junit_internal_runners_TestClass -> MethodSorter [ label = \"1\" weight = \"1\" ];\nTestMethod -> org_junit_internal_runners_TestClass [ label = \"4\" weight = \"4\" ];\nTestMethod -> org_junit_Test [ label = \"5\" weight = \"5\" ];\nTextListener -> RunListener [ label = \"1\" weight = \"1\" ];\nTextListener -> JUnitSystem [ label = \"2\" weight = \"2\" ];\nTextListener -> Result [ label = \"10\" weight = \"10\" ];\nTextListener -> Description [ label = \"2\" weight = \"2\" ];\nTextListener -> Failure [ label = \"6\" weight = \"6\" ];\nThrowables -> org_junit_internal_Throwables_State [ label = \"2\" weight = \"2\" ];\norg_junit_internal_Throwables_State -> Throwables [ label = \"5\" weight = \"5\" color = \"red\" ];\norg_junit_internal_Throwables_State_1 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_1 [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State_2 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_2 [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State_3 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_3 [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State_4 -> org_junit_internal_Throwables_State [ label = \"1\" weight = \"1\" ];\norg_junit_internal_Throwables_State -> org_junit_internal_Throwables_State_4 [ label = \"1\" weight = \"1\" color = \"red\" ];\nJUnitMatchers -> StacktracePrintingMatcher [ label = \"2\" weight = \"2\" ];\nDisableOnDebug -> TestRule [ label = \"5\" weight = \"5\" ];\nDisableOnDebug -> ManagementFactory [ label = \"1\" weight = \"1\" ];\nDisableOnDebug -> RuntimeMXBean [ label = \"1\" weight = \"1\" ];\nDisableOnDebug -> Statement [ label = \"2\" weight = \"2\" ];\nDisableOnDebug -> Description [ label = \"1\" weight = \"1\" ];\nErrorCollector -> Verifier [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nErrorCollector -> ThrowingRunnable [ label = \"1\" weight = \"1\" ];\nErrorCollector -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nExpectedException -> TestRule [ label = \"1\" weight = \"1\" ];\nExpectedException -> ExpectedExceptionMatcherBuilder [ label = \"6\" weight = \"6\" ];\nExpectedException -> Statement [ label = \"2\" weight = \"2\" ];\nExpectedException -> Description [ label = \"1\" weight = \"1\" ];\nExpectedException -> org_junit_rules_ExpectedException_ExpectedExceptionStatement [ label = \"1\" weight = \"1\" ];\nExpectedException -> ThrowableMessageMatcher [ label = \"1\" weight = \"1\" ];\nExpectedException -> ThrowableCauseMatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement -> Statement [ label = \"4\" weight = \"4\" ];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement -> ExpectedException [ label = \"3\" weight = \"3\" color = \"red\" ];\nExpectedException -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nExpectedExceptionMatcherBuilder -> JUnitMatchers [ label = \"1\" weight = \"1\" ];\nExternalResource -> TestRule [ label = \"1\" weight = \"1\" ];\nExternalResource -> Statement [ label = \"5\" weight = \"5\" ];\nExternalResource -> Description [ label = \"1\" weight = \"1\" ];\nExternalResource -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nMethodRule -> Statement [ label = \"2\" weight = \"2\" ];\nMethodRule -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nRuleChain -> TestRule [ label = \"8\" weight = \"8\" ];\nRuleChain -> Statement [ label = \"2\" weight = \"2\" ];\nRuleChain -> Description [ label = \"1\" weight = \"1\" ];\nRuleChain -> RunRules [ label = \"1\" weight = \"1\" ];\nRunRules -> Statement [ label = \"6\" weight = \"6\" ];\nRunRules -> TestRule [ label = \"4\" weight = \"4\" ];\nRunRules -> Description [ label = \"2\" weight = \"2\" ];\nStopwatch -> TestRule [ label = \"1\" weight = \"1\" ];\nStopwatch -> org_junit_rules_Stopwatch_Clock [ label = \"6\" weight = \"6\" ];\nStopwatch -> Description [ label = \"5\" weight = \"5\" ];\nStopwatch -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nStopwatch -> Statement [ label = \"2\" weight = \"2\" ];\nStopwatch -> org_junit_rules_Stopwatch_InternalWatcher [ label = \"1\" weight = \"1\" ];\nStopwatch -> TestWatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> TestWatcher [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> Description [ label = \"5\" weight = \"5\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> Stopwatch [ label = \"12\" weight = \"12\" color = \"red\" ];\norg_junit_rules_Stopwatch_InternalWatcher -> org_junit_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nTemporaryFolder -> ExternalResource [ label = \"1\" weight = \"1\" ];\nTemporaryFolder -> org_junit_rules_TemporaryFolder_Builder [ label = \"3\" weight = \"3\" color = \"red\" ];\norg_junit_rules_TemporaryFolder_Builder -> TemporaryFolder [ label = \"2\" weight = \"2\" ];\nTemporaryFolder -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\nTestName -> TestWatcher [ label = \"1\" weight = \"1\" ];\nTestName -> Description [ label = \"2\" weight = \"2\" ];\nTestRule -> Statement [ label = \"2\" weight = \"2\" ];\nTestRule -> Description [ label = \"1\" weight = \"1\" ];\nTestWatcher -> TestRule [ label = \"1\" weight = \"1\" ];\nTestWatcher -> Statement [ label = \"3\" weight = \"3\" ];\nTestWatcher -> Description [ label = \"12\" weight = \"12\" ];\nTestWatcher -> org_junit_internal_AssumptionViolatedException [ label = \"4\" weight = \"4\" ];\nTestWatcher -> org_junit_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" ];\nTestWatcher -> org_junit_AssumptionViolatedException [ label = \"3\" weight = \"3\" ];\nTestWatchman -> MethodRule [ label = \"1\" weight = \"1\" ];\nTestWatchman -> Statement [ label = \"3\" weight = \"3\" ];\nTestWatchman -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nTestWatchman -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nTimeout -> TestRule [ label = \"1\" weight = \"1\" ];\nTimeout -> org_junit_rules_Timeout_Builder [ label = \"6\" weight = \"6\" color = \"red\" ];\nTimeout -> Statement [ label = \"4\" weight = \"4\" ];\nTimeout -> FailOnTimeout [ label = \"1\" weight = \"1\" ];\nTimeout -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"3\" weight = \"3\" ];\nTimeout -> Description [ label = \"1\" weight = \"1\" ];\norg_junit_rules_Timeout_Builder -> Timeout [ label = \"2\" weight = \"2\" ];\nVerifier -> TestRule [ label = \"1\" weight = \"1\" ];\nVerifier -> Statement [ label = \"3\" weight = \"3\" ];\nVerifier -> Description [ label = \"1\" weight = \"1\" ];\nComputer -> RunnerBuilder [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Computer_1 -> Runner [ label = \"1\" weight = \"1\" ];\nComputer -> org_junit_runner_Computer_1 [ label = \"1\" weight = \"1\" ];\nComputer -> Runner [ label = \"2\" weight = \"2\" ];\nComputer -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nDescribable -> Description [ label = \"1\" weight = \"1\" ];\nFilterFactories -> Request [ label = \"2\" weight = \"2\" ];\nFilterFactories -> Runner [ label = \"1\" weight = \"1\" ];\nFilterFactories -> Description [ label = \"1\" weight = \"1\" ];\nFilterFactories -> FilterFactoryParams [ label = \"3\" weight = \"3\" ];\nFilterFactories -> Filter [ label = \"3\" weight = \"3\" ];\nFilterFactories -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"7\" weight = \"7\" ];\nFilterFactories -> FilterFactory [ label = \"9\" weight = \"9\" ];\nFilterFactories -> Classes [ label = \"1\" weight = \"1\" ];\nFilterFactory -> FilterFactoryParams [ label = \"1\" weight = \"1\" ];\nFilterFactory -> Filter [ label = \"1\" weight = \"1\" ];\nFilterFactory -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"1\" weight = \"1\" ];\nFilterFactoryParams -> Description [ label = \"3\" weight = \"3\" ];\nJUnitCommandLineParseResult -> org_junit_runner_JUnitCommandLineParseResult_CommandLineParserError [ label = \"2\" weight = \"2\" ];\nJUnitCommandLineParseResult -> Classes [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> Request [ label = \"8\" weight = \"8\" ];\nJUnitCommandLineParseResult -> Computer [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> FilterFactories [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> Filter [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> org_junit_runner_FilterFactory_FilterNotCreatedException [ label = \"1\" weight = \"1\" ];\nJUnitCore -> RunNotifier [ label = \"7\" weight = \"7\" ];\nJUnitCore -> RealSystem [ label = \"1\" weight = \"1\" ];\nJUnitCore -> Result [ label = \"13\" weight = \"13\" ];\nJUnitCore -> Computer [ label = \"4\" weight = \"4\" ];\nJUnitCore -> JUnitSystem [ label = \"2\" weight = \"2\" ];\nJUnitCore -> Version [ label = \"2\" weight = \"2\" ];\nJUnitCore -> JUnitCommandLineParseResult [ label = \"3\" weight = \"3\" ];\nJUnitCore -> TextListener [ label = \"1\" weight = \"1\" ];\nJUnitCore -> RunListener [ label = \"4\" weight = \"4\" ];\nJUnitCore -> Request [ label = \"3\" weight = \"3\" ];\nJUnitCore -> junit_framework_Test [ label = \"1\" weight = \"1\" ];\nJUnitCore -> JUnit38ClassRunner [ label = \"1\" weight = \"1\" ];\nJUnitCore -> Runner [ label = \"3\" weight = \"3\" ];\nAlphanumeric -> Sorter [ label = \"2\" weight = \"2\" ];\nAlphanumeric -> org_junit_runner_manipulation_Ordering_Factory [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> Ordering [ label = \"1\" weight = \"1\" ];\nAlphanumeric -> Description [ label = \"5\" weight = \"5\" ];\nFilter -> Description [ label = \"10\" weight = \"10\" ];\norg_junit_runner_manipulation_Filter_1 -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\norg_junit_runner_manipulation_Filter_1 -> Filter [ label = \"1\" weight = \"1\" ];\nFilter -> org_junit_runner_manipulation_Filter_1 [ label = \"1\" weight = \"1\" color = \"red\" ];\nFilter -> Filterable [ label = \"4\" weight = \"4\" ];\nFilter -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nFilterable -> Filter [ label = \"1\" weight = \"1\" color = \"red\" ];\nFilterable -> NoTestsRemainException [ label = \"1\" weight = \"1\" ];\nOrderable -> Sortable [ label = \"1\" weight = \"1\" ];\nOrderable -> Orderer [ label = \"1\" weight = \"1\" color = \"red\" ];\nOrderable -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nOrderer -> Ordering [ label = \"4\" weight = \"4\" ];\nOrderer -> Description [ label = \"7\" weight = \"7\" ];\nOrderer -> InvalidOrderingException [ label = \"5\" weight = \"5\" ];\nOrderer -> Orderable [ label = \"4\" weight = \"4\" ];\nOrdering -> Description [ label = \"7\" weight = \"7\" ];\norg_junit_runner_manipulation_Ordering_1 -> Description [ label = \"1\" weight = \"1\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_1 [ label = \"1\" weight = \"1\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_Factory [ label = \"5\" weight = \"5\" ];\nOrdering -> InvalidOrderingException [ label = \"5\" weight = \"5\" ];\nOrdering -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\nOrdering -> Orderable [ label = \"4\" weight = \"4\" ];\nOrdering -> Orderer [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_manipulation_Ordering_Context -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runner_manipulation_Ordering_Factory -> org_junit_runner_manipulation_Ordering_Context [ label = \"1\" weight = \"1\" ];\norg_junit_runner_manipulation_Ordering_Factory -> Ordering [ label = \"1\" weight = \"1\" color = \"red\" ];\nSortable -> Sorter [ label = \"1\" weight = \"1\" color = \"red\" ];\nSorter -> Ordering [ label = \"1\" weight = \"1\" ];\nSorter -> Description [ label = \"11\" weight = \"11\" ];\nSorter -> Sortable [ label = \"4\" weight = \"4\" ];\nFailure -> Description [ label = \"4\" weight = \"4\" ];\nFailure -> Throwables [ label = \"2\" weight = \"2\" ];\nRunListener -> Description [ label = \"6\" weight = \"6\" ];\nRunListener -> Result [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunListener -> Failure [ label = \"2\" weight = \"2\" ];\nRunNotifier -> RunListener [ label = \"26\" weight = \"26\" ];\nRunNotifier -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"1\" weight = \"1\" ];\nRunNotifier -> SynchronizedRunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> RunListener [ label = \"6\" weight = \"6\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> Failure [ label = \"3\" weight = \"3\" ];\norg_junit_runner_notification_RunNotifier_SafeNotifier -> RunNotifier [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunNotifier -> Description [ label = \"6\" weight = \"6\" ];\nRunNotifier -> org_junit_runner_notification_RunNotifier_SafeNotifier [ label = \"9\" weight = \"9\" ];\nRunNotifier -> Result [ label = \"1\" weight = \"1\" ];\nRunNotifier -> StoppedByUserException [ label = \"2\" weight = \"2\" ];\nRunNotifier -> Failure [ label = \"4\" weight = \"4\" ];\nSynchronizedRunListener -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"5\" weight = \"5\" ];\nSynchronizedRunListener -> RunListener [ label = \"12\" weight = \"12\" ];\nSynchronizedRunListener -> Description [ label = \"6\" weight = \"6\" ];\nSynchronizedRunListener -> Result [ label = \"1\" weight = \"1\" ];\nSynchronizedRunListener -> Failure [ label = \"2\" weight = \"2\" ];\nOrderWith -> ValidateWith [ label = \"2\" weight = \"2\" ];\nOrderWith -> OrderWithValidator [ label = \"1\" weight = \"1\" ];\nOrderWith -> org_junit_runner_manipulation_Ordering_Factory [ label = \"1\" weight = \"1\" ];\nOrderWithValidator -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\nOrderWithValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\nRequest -> Description [ label = \"4\" weight = \"4\" ];\nRequest -> ClassRequest [ label = \"2\" weight = \"2\" ];\nRequest -> Computer [ label = \"2\" weight = \"2\" ];\nRequest -> AllDefaultPossibilitiesBuilder [ label = \"2\" weight = \"2\" ];\nRequest -> Runner [ label = \"3\" weight = \"3\" ];\nRequest -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nRequest -> ErrorReportingRunner [ label = \"2\" weight = \"2\" ];\nRequest -> JUnitCore [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_Request_1 -> Runner [ label = \"1\" weight = \"1\" ];\nRequest -> org_junit_runner_Request_1 [ label = \"1\" weight = \"1\" ];\nRequest -> Filter [ label = \"2\" weight = \"2\" ];\nRequest -> FilterRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> SortingRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> Ordering [ label = \"1\" weight = \"1\" ];\nRequest -> OrderingRequest [ label = \"1\" weight = \"1\" ];\nResult -> Failure [ label = \"4\" weight = \"4\" ];\nResult -> org_junit_runner_Result_SerializedForm [ label = \"6\" weight = \"6\" color = \"red\" ];\norg_junit_runner_Result_Listener -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"2\" weight = \"2\" ];\norg_junit_runner_Result_Listener -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_Result_Listener -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Result_Listener -> Result [ label = \"1\" weight = \"1\" color = \"red\" ];\norg_junit_runner_Result_Listener -> Failure [ label = \"2\" weight = \"2\" ];\nResult -> org_junit_runner_Result_Listener [ label = \"1\" weight = \"1\" ];\nResult -> org_junit_runner_notification_RunListener_ThreadSafe [ label = \"1\" weight = \"1\" ];\nResult -> RunListener [ label = \"1\" weight = \"1\" ];\norg_junit_runner_Result_SerializedForm -> Failure [ label = \"3\" weight = \"3\" ];\norg_junit_runner_Result_SerializedForm -> Result [ label = \"1\" weight = \"1\" ];\nRunner -> Describable [ label = \"1\" weight = \"1\" ];\nRunner -> Description [ label = \"2\" weight = \"2\" ];\nRunner -> RunNotifier [ label = \"1\" weight = \"1\" ];\nRunWith -> Runner [ label = \"1\" weight = \"1\" ];\nAllTests -> SuiteMethod [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> FrameworkMethod [ label = \"24\" weight = \"24\" ];\nBlockJUnit4ClassRunner -> ParentRunner [ label = \"27\" weight = \"27\" ];\nBlockJUnit4ClassRunner -> PublicClassValidator [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> TestClassValidator [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> Description [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_model_TestClass [ label = \"16\" weight = \"16\" ];\nBlockJUnit4ClassRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> Statement [ label = \"15\" weight = \"15\" ];\nBlockJUnit4ClassRunner -> RuleMemberValidator [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> ReflectiveCallable [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> Fail [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> InvokeMethod [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> org_junit_Test [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> ExpectException [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> FailOnTimeout [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> org_junit_internal_runners_statements_FailOnTimeout_Builder [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunner -> RunBefores [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> RunAfters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunner -> RuleContainer [ label = \"7\" weight = \"7\" ];\nBlockJUnit4ClassRunner -> TestRule [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunner -> MethodRule [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunner -> org_junit_runners_BlockJUnit4ClassRunner_RuleCollector [ label = \"4\" weight = \"4\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> MemberValueConsumer [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> Rule [ label = \"2\" weight = \"2\" ];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector -> RuleContainer [ label = \"2\" weight = \"2\" ];\nJUnit4 -> BlockJUnit4ClassRunner [ label = \"2\" weight = \"2\" ];\nJUnit4 -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nJUnit4 -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nFrameworkField -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nFrameworkMember -> Annotatable [ label = \"1\" weight = \"1\" ];\nFrameworkMethod -> FrameworkMember [ label = \"4\" weight = \"4\" ];\nFrameworkMethod -> ReflectiveCallable [ label = \"1\" weight = \"1\" ];\nFrameworkMethod -> NoGenericTypeParametersValidator [ label = \"2\" weight = \"2\" ];\nInvalidTestClassError -> org_junit_runners_model_InitializationError [ label = \"2\" weight = \"2\" ];\nMemberValueConsumer -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_MultipleFailureException -> TestCouldNotBeSkippedException [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> Throwables [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_MultipleFailureException -> org_junit_internal_runners_model_MultipleFailureException [ label = \"1\" weight = \"1\" color = \"red\" ];\nRunnerBuilder -> Runner [ label = \"11\" weight = \"11\" ];\nRunnerBuilder -> ErrorReportingRunner [ label = \"1\" weight = \"1\" ];\nRunnerBuilder -> Description [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> ValidateWith [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> OrderWith [ label = \"2\" weight = \"2\" ];\nRunnerBuilder -> Ordering [ label = \"3\" weight = \"3\" ];\nRunnerBuilder -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nRunnerBuilder -> org_junit_runners_model_InitializationError [ label = \"4\" weight = \"4\" ];\norg_junit_runners_model_TestClass -> Annotatable [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> org_junit_runners_model_TestClass_FieldComparator [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> org_junit_runners_model_TestClass_MethodComparator [ label = \"2\" weight = \"2\" ];\norg_junit_runners_model_TestClass -> FrameworkMethod [ label = \"12\" weight = \"12\" ];\norg_junit_runners_model_TestClass -> FrameworkField [ label = \"9\" weight = \"9\" ];\norg_junit_runners_model_TestClass -> MethodSorter [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_TestClass -> FrameworkMember [ label = \"14\" weight = \"14\" ];\norg_junit_runners_model_TestClass -> org_junit_Assert [ label = \"1\" weight = \"1\" ];\norg_junit_runners_model_TestClass -> MemberValueConsumer [ label = \"4\" weight = \"4\" ];\norg_junit_runners_model_TestClass_MethodComparator -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> BlockJUnit4ClassRunner [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> TestWithParameters [ label = \"5\" weight = \"5\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_InjectionType [ label = \"2\" weight = \"2\" ];\nBlockJUnit4ClassRunnerWithParameters -> ParentRunner [ label = \"8\" weight = \"8\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunnerWithParameters -> FrameworkField [ label = \"7\" weight = \"7\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_Parameterized_Parameter [ label = \"3\" weight = \"3\" ];\nBlockJUnit4ClassRunnerWithParameters -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParameters -> RunNotifier [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParameters -> Statement [ label = \"6\" weight = \"6\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> RunBefores [ label = \"2\" weight = \"2\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParameters -> org_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> RunAfters [ label = \"2\" weight = \"2\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> Statement [ label = \"1\" weight = \"1\" ];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams -> FrameworkMethod [ label = \"4\" weight = \"4\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> ParametersRunnerFactory [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> TestWithParameters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> BlockJUnit4ClassRunnerWithParameters [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> Runner [ label = \"1\" weight = \"1\" ];\nBlockJUnit4ClassRunnerWithParametersFactory -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> TestWithParameters [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> Runner [ label = \"1\" weight = \"1\" ];\nParametersRunnerFactory -> org_junit_runners_model_InitializationError [ label = \"1\" weight = \"1\" ];\nTestWithParameters -> org_junit_runners_model_TestClass [ label = \"6\" weight = \"6\" ];\nTestWithParameters -> Checks [ label = \"3\" weight = \"3\" ];\nParameterized -> Suite [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_UseParametersRunnerFactory -> ParametersRunnerFactory [ label = \"1\" weight = \"1\" ];\nParameterized -> org_junit_runners_Parameterized_RunnersFactory [ label = \"3\" weight = \"3\" ];\nParameterized -> ParentRunner [ label = \"2\" weight = \"2\" ];\nParameterized -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\nParameterized -> InvalidTestClassError [ label = \"2\" weight = \"2\" ];\nParameterized -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Runner [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Description [ label = \"3\" weight = \"3\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> RunNotifier [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_AssumptionViolationRunner -> Failure [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> BlockJUnit4ClassRunnerWithParametersFactory [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> ParametersRunnerFactory [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_model_TestClass [ label = \"10\" weight = \"10\" ];\norg_junit_runners_Parameterized_RunnersFactory -> FrameworkMethod [ label = \"10\" weight = \"10\" ];\norg_junit_runners_Parameterized_RunnersFactory -> Runner [ label = \"5\" weight = \"5\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_AssumptionViolationRunner [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_Parameters [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> org_junit_runners_Parameterized_UseParametersRunnerFactory [ label = \"2\" weight = \"2\" ];\norg_junit_runners_Parameterized_RunnersFactory -> TestWithParameters [ label = \"8\" weight = \"8\" ];\norg_junit_runners_Parameterized_RunnersFactory -> FrameworkMember [ label = \"2\" weight = \"2\" ];\nParentRunner -> Runner [ label = \"1\" weight = \"1\" ];\nParentRunner -> Filterable [ label = \"1\" weight = \"1\" ];\nParentRunner -> Orderable [ label = \"1\" weight = \"1\" ];\nParentRunner -> AnnotationsValidator [ label = \"1\" weight = \"1\" ];\nParentRunner -> TestClassValidator [ label = \"4\" weight = \"4\" ];\nParentRunner -> org_junit_runners_model_TestClass [ label = \"15\" weight = \"15\" ];\nParentRunner -> RunnerScheduler [ label = \"5\" weight = \"5\" ];\nParentRunner -> org_junit_runners_model_InitializationError [ label = \"3\" weight = \"3\" ];\nParentRunner -> Checks [ label = \"1\" weight = \"1\" ];\nParentRunner -> Description [ label = \"13\" weight = \"13\" ];\nParentRunner -> RunNotifier [ label = \"6\" weight = \"6\" ];\nParentRunner -> FrameworkMethod [ label = \"5\" weight = \"5\" ];\nParentRunner -> RuleMemberValidator [ label = \"2\" weight = \"2\" ];\nParentRunner -> Statement [ label = \"16\" weight = \"16\" ];\nParentRunner -> RunBefores [ label = \"1\" weight = \"1\" ];\nParentRunner -> RunAfters [ label = \"1\" weight = \"1\" ];\nParentRunner -> TestRule [ label = \"2\" weight = \"2\" ];\nParentRunner -> RunRules [ label = \"1\" weight = \"1\" ];\nParentRunner -> org_junit_runners_ParentRunner_ClassRuleCollector [ label = \"3\" weight = \"3\" ];\nParentRunner -> EachTestNotifier [ label = \"12\" weight = \"12\" ];\nParentRunner -> org_junit_internal_AssumptionViolatedException [ label = \"2\" weight = \"2\" ];\nParentRunner -> StoppedByUserException [ label = \"1\" weight = \"1\" ];\nParentRunner -> Filter [ label = \"4\" weight = \"4\" ];\nParentRunner -> NoTestsRemainException [ label = \"3\" weight = \"3\" ];\nParentRunner -> Sorter [ label = \"4\" weight = \"4\" ];\nParentRunner -> Orderer [ label = \"3\" weight = \"3\" ];\nParentRunner -> InvalidOrderingException [ label = \"1\" weight = \"1\" ];\nParentRunner -> InvalidTestClassError [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> MemberValueConsumer [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> TestRule [ label = \"6\" weight = \"6\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> org_junit_runners_RuleContainer_RuleEntry [ label = \"4\" weight = \"4\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> FrameworkMember [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> Annotatable [ label = \"1\" weight = \"1\" ];\norg_junit_runners_ParentRunner_ClassRuleCollector -> ClassRule [ label = \"2\" weight = \"2\" ];\nRuleContainer -> TestRule [ label = \"6\" weight = \"6\" ];\nRuleContainer -> MethodRule [ label = \"6\" weight = \"6\" ];\nRuleContainer -> org_junit_runners_RuleContainer_RuleEntry [ label = \"10\" weight = \"10\" ];\nRuleContainer -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nRuleContainer -> Description [ label = \"1\" weight = \"1\" ];\nRuleContainer -> Statement [ label = \"3\" weight = \"3\" ];\nSuite -> Runner [ label = \"9\" weight = \"9\" ];\nSuite -> ParentRunner [ label = \"2\" weight = \"2\" ];\nSuite -> org_junit_runners_model_InitializationError [ label = \"8\" weight = \"8\" ];\nSuite -> org_junit_runners_Suite_SuiteClasses [ label = \"2\" weight = \"2\" ];\nSuite -> RunnerBuilder [ label = \"5\" weight = \"5\" ];\nSuite -> AllDefaultPossibilitiesBuilder [ label = \"1\" weight = \"1\" ];\nSuite -> Description [ label = \"1\" weight = \"1\" ];\nSuite -> RunNotifier [ label = \"1\" weight = \"1\" ];\nTestCouldNotBeSkippedException -> org_junit_internal_AssumptionViolatedException [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> TestClassValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_ClassValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_MethodValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_FieldValidator [ label = \"1\" weight = \"1\" ];\nAnnotationsValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"4\" weight = \"4\" ];\nAnnotationsValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> Annotatable [ label = \"7\" weight = \"7\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> AnnotationValidatorFactory [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator -> ValidateWith [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> org_junit_runners_model_TestClass [ label = \"4\" weight = \"4\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_ClassValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> FrameworkMethod [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_MethodValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> org_junit_validator_AnnotationsValidator_AnnotatableValidator [ label = \"1\" weight = \"1\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> FrameworkField [ label = \"3\" weight = \"3\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> org_junit_runners_model_TestClass [ label = \"2\" weight = \"2\" ];\norg_junit_validator_AnnotationsValidator_FieldValidator -> AnnotationValidator [ label = \"2\" weight = \"2\" ];\nAnnotationValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nAnnotationValidator -> FrameworkField [ label = \"1\" weight = \"1\" ];\nAnnotationValidator -> FrameworkMethod [ label = \"1\" weight = \"1\" ];\nAnnotationValidatorFactory -> ValidateWith [ label = \"4\" weight = \"4\" ];\nAnnotationValidatorFactory -> AnnotationValidator [ label = \"6\" weight = \"6\" ];\nPublicClassValidator -> TestClassValidator [ label = \"1\" weight = \"1\" ];\nPublicClassValidator -> org_junit_runners_model_TestClass [ label = \"3\" weight = \"3\" ];\nTestClassValidator -> org_junit_runners_model_TestClass [ label = \"1\" weight = \"1\" ];\nValidateWith -> AnnotationValidator [ label = \"1\" weight = \"1\" ];\norg_junit_internal_requests_ClassRequest_CustomSuiteMethodBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\" label=\"ClassRequest$CustomSuiteMethodBuilder\"];\nRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" color=red style=filled];\nIncludeCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/IncludeCategories.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_AnnotatableValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$AnnotatableValidator\"];\nParameterSignature [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParameterSignature.java\" target=\"_blank\"];\norg_junit_rules_ExpectedException_ExpectedExceptionStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedException.java\" target=\"_blank\" label=\"ExpectedException$ExpectedExceptionStatement\"];\nNullBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/NullBuilder.java\" target=\"_blank\"];\nOrdering [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\"];\nTestSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestSuite.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_FieldValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$FieldValidator\"];\norg_junit_ComparisonFailure_ComparisonCompactor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\" label=\"ComparisonFailure$ComparisonCompactor\" color=red style=filled];\norg_junit_experimental_categories_Categories_IncludeCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$IncludeCategory\"];\nExpectedExceptionMatcherBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedExceptionMatcherBuilder.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_DeclaringClassMustBePublic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$DeclaringClassMustBePublic\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_InjectionType [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$InjectionType\"];\nSortingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/SortingRequest.java\" target=\"_blank\"];\nTestSetup [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/TestSetup.java\" target=\"_blank\"];\nArrayComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ArrayComparisonFailure.java\" target=\"_blank\"];\norg_junit_runner_Request_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" label=\"Request$1\"];\norg_junit_runner_Computer_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Computer.java\" target=\"_blank\" label=\"Computer$1\"];\nErrorCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ErrorCollector.java\" target=\"_blank\"];\norg_junit_internal_runners_InitializationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/InitializationError.java\" target=\"_blank\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunAfterParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$RunAfterParams\"];\nVerifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Verifier.java\" target=\"_blank\"];\nThrowingRunnable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/function/ThrowingRunnable.java\" target=\"_blank\"];\nExternalResource [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExternalResource.java\" target=\"_blank\"];\nFailureList [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/FailureList.java\" target=\"_blank\"];\nResultPrinter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/textui/ResultPrinter.java\" target=\"_blank\"];\nReflectiveRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveRuntimeMXBean.java\" target=\"_blank\"];\norg_junit_ComparisonFailure_ComparisonCompactor_DiffExtractor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\" label=\"ComparisonFailure$ComparisonCompactor$DiffExtractor\"];\nValidationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/ValidationError.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeStatic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBeStatic\"];\nSuiteMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/SuiteMethod.java\" target=\"_blank\"];\nSerializableMatcherDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/SerializableMatcherDescription.java\" target=\"_blank\"];\nRunWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/RunWith.java\" target=\"_blank\"];\nPrintableResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/PrintableResult.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_ThreadHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$ThreadHolder\"];\nInvokeMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/InvokeMethod.java\" target=\"_blank\"];\nFakeRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/FakeRuntimeMXBean.java\" target=\"_blank\"];\nActiveTestSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/ActiveTestSuite.java\" target=\"_blank\"];\nTheories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\"];\nComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ComparisonCriteria.java\" target=\"_blank\"];\nClassRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\"];\nTimeout [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Timeout.java\" target=\"_blank\" color=red style=filled];\nTestCase [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestCase.java\" target=\"_blank\"];\norg_junit_AssumptionViolatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/AssumptionViolatedException.java\" target=\"_blank\"];\norg_junit_experimental_categories_IncludeCategories_IncludesAny [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/IncludeCategories.java\" target=\"_blank\" label=\"IncludeCategories$IncludesAny\"];\nFilter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filter.java\" target=\"_blank\" color=red style=filled];\norg_junit_internal_runners_statements_FailOnTimeout_CallableStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" label=\"FailOnTimeout$CallableStatement\"];\norg_junit_runner_notification_RunNotifier_SafeNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunNotifier.java\" target=\"_blank\" label=\"RunNotifier$SafeNotifier\"];\norg_junit_runner_notification_RunListener_ThreadSafe [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunListener.java\" target=\"_blank\" label=\"RunListener$ThreadSafe\"];\norg_junit_Test [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Test.java\" target=\"_blank\"];\nJUnit4TestCaseFacade [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestCaseFacade.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_Parameter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$Parameter\"];\nFilterRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/FilterRequest.java\" target=\"_blank\"];\norg_junit_experimental_theories_internal_AllMembersSupplier_MethodParameterValue [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java\" target=\"_blank\" label=\"AllMembersSupplier$MethodParameterValue\"];\nCategoryValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/CategoryValidator.java\" target=\"_blank\"];\norg_junit_experimental_categories_Categories_ExcludeCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$ExcludeCategory\"];\norg_junit_ComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ComparisonFailure.java\" target=\"_blank\"];\nMethodSorters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/MethodSorters.java\" target=\"_blank\"];\nRunnerBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/RunnerBuilder.java\" target=\"_blank\" color=red style=filled];\nChecks [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Checks.java\" target=\"_blank\"];\nFilterable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filterable.java\" target=\"_blank\"];\nManagementFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_MethodValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$MethodValidator\"];\nRunRules [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/RunRules.java\" target=\"_blank\"];\nMethodSorter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/MethodSorter.java\" target=\"_blank\"];\nThrowables [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\"];\nEachTestNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/EachTestNotifier.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State_4 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$4\"];\norg_junit_internal_Throwables_State_3 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$3\"];\norg_junit_internal_Throwables_State_2 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$2\"];\nRunListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunListener.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State$1\"];\nTestFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestFailure.java\" target=\"_blank\"];\nDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Description.java\" target=\"_blank\"];\nAnnotationValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationValidator.java\" target=\"_blank\"];\nFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/Failure.java\" target=\"_blank\" color=red style=filled];\nInvalidTestClassError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/InvalidTestClassError.java\" target=\"_blank\"];\nValidateWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/ValidateWith.java\" target=\"_blank\"];\norg_junit_runner_Result_SerializedForm [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\" label=\"Result$SerializedForm\"];\norg_junit_runners_Parameterized_RunnersFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$RunnersFactory\"];\nFailOnTimeout [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" color=red style=filled];\nAllDefaultPossibilitiesBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/AllDefaultPossibilitiesBuilder.java\" target=\"_blank\"];\norg_junit_runner_manipulation_Ordering_Factory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$Factory\"];\nDisableOnDebug [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/DisableOnDebug.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_AssumptionViolationRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$AssumptionViolationRunner\"];\nNoGenericTypeParametersValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/NoGenericTypeParametersValidator.java\" target=\"_blank\"];\nStatement [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/Statement.java\" target=\"_blank\" color=red style=filled];\njunit_framework_Test [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Test.java\" target=\"_blank\" color=red style=filled];\nJUnitMatchers [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/matchers/JUnitMatchers.java\" target=\"_blank\"];\nMemberValueConsumer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/MemberValueConsumer.java\" target=\"_blank\"];\nJUnit4TestAdapter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestAdapter.java\" target=\"_blank\" color=red style=filled];\norg_junit_experimental_categories_Categories_CategoryFilter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" label=\"Categories$CategoryFilter\"];\nFakeThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/FakeThreadMXBean.java\" target=\"_blank\"];\norg_junit_internal_runners_TestClass [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/TestClass.java\" target=\"_blank\"];\nInvalidOrderingException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/InvalidOrderingException.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_FactoryHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$FactoryHolder\"];\nParallelComputer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/ParallelComputer.java\" target=\"_blank\"];\nStacktracePrintingMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/StacktracePrintingMatcher.java\" target=\"_blank\"];\norg_junit_internal_runners_statements_FailOnTimeout_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java\" target=\"_blank\" label=\"FailOnTimeout$Builder\"];\norg_junit_runner_JUnitCommandLineParseResult_CommandLineParserError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\" label=\"JUnitCommandLineParseResult$CommandLineParserError\"];\norg_junit_runners_BlockJUnit4ClassRunner_RuleCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunner$RuleCollector\"];\nExcludeCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/ExcludeCategories.java\" target=\"_blank\"];\nMethodValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/MethodValidator.java\" target=\"_blank\"];\norg_junit_experimental_theories_Theories_TheoryAnchor_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\" label=\"Theories$TheoryAnchor$1\"];\norg_junit_runner_Result_Listener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\" label=\"Result$Listener\"];\nExactComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/ExactComparisonCriteria.java\" target=\"_blank\"];\nAnnotationsValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\"];\nAssume [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Assume.java\" target=\"_blank\"];\nTestCouldNotBeSkippedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/TestCouldNotBeSkippedException.java\" target=\"_blank\"];\nJUnitSystem [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/JUnitSystem.java\" target=\"_blank\"];\nBlockJUnit4ClassRunnerWithParametersFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParametersFactory.java\" target=\"_blank\"];\nClassRoadie [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/ClassRoadie.java\" target=\"_blank\"];\norg_junit_rules_Stopwatch_Clock [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" label=\"Stopwatch$Clock\"];\nJUnit3Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/JUnit3Builder.java\" target=\"_blank\"];\nFrameworkMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkMethod.java\" target=\"_blank\" color=red style=filled];\nIgnoredBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/IgnoredBuilder.java\" target=\"_blank\"];\norg_junit_internal_Throwables_State [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Throwables.java\" target=\"_blank\" label=\"Throwables$State\"];\nTestTimedOutException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestTimedOutException.java\" target=\"_blank\"];\nSpecificDataPointsSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java\" target=\"_blank\" color=red style=filled];\nJUnit4 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/JUnit4.java\" target=\"_blank\"];\nJUnitCommandLineParseResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\"];\njunit_framework_Assert [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Assert.java\" target=\"_blank\" color=red style=filled];\nOrderWithValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/OrderWithValidator.java\" target=\"_blank\"];\nParametersRunnerFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/ParametersRunnerFactory.java\" target=\"_blank\"];\nTestDecorator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/TestDecorator.java\" target=\"_blank\"];\nParametersSuppliedBy [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParametersSuppliedBy.java\" target=\"_blank\"];\nMemoizingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/MemoizingRequest.java\" target=\"_blank\"];\nTestClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/TestClassValidator.java\" target=\"_blank\"];\nResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Result.java\" target=\"_blank\"];\nJUnitCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCore.java\" target=\"_blank\"];\norg_junit_experimental_theories_Theories_TheoryAnchor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theories.java\" target=\"_blank\" label=\"Theories$TheoryAnchor\"];\nTestRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/textui/TestRunner.java\" target=\"_blank\"];\nInexactComparisonCriteria [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/InexactComparisonCriteria.java\" target=\"_blank\"];\nRunnerScheduler [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/RunnerScheduler.java\" target=\"_blank\"];\norg_junit_internal_AssumptionViolatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/AssumptionViolatedException.java\" target=\"_blank\"];\nFilterFactories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactories.java\" target=\"_blank\"];\nParameterSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/ParameterSupplier.java\" target=\"_blank\"];\nThrowableMessageMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/ThrowableMessageMatcher.java\" target=\"_blank\"];\nMaxCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxCore.java\" target=\"_blank\"];\nReflectiveThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveThreadMXBean.java\" target=\"_blank\"];\nRuleContainer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/RuleContainer.java\" target=\"_blank\"];\nBlockJUnit4ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java\" target=\"_blank\" color=red style=filled];\norg_junit_runner_FilterFactory_FilterNotCreatedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactory.java\" target=\"_blank\" label=\"FilterFactory$FilterNotCreatedException\"];\njunit_framework_ComparisonFailure [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/ComparisonFailure.java\" target=\"_blank\"];\nFrameworkMember [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkMember.java\" target=\"_blank\"];\nClassRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/ClassRule.java\" target=\"_blank\"];\nTheory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/Theory.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeARule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MethodMustBeARule\"];\nJUnit4Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/JUnit4Builder.java\" target=\"_blank\"];\nSuiteMethodBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/SuiteMethodBuilder.java\" target=\"_blank\"];\norg_junit_internal_runners_JUnit38ClassRunner_OldTestClassAdaptingListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java\" target=\"_blank\" label=\"JUnit38ClassRunner$OldTestClassAdaptingListener\"];\nTestWithParameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/TestWithParameters.java\" target=\"_blank\"];\norg_junit_runners_Parameterized_UseParametersRunnerFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$UseParametersRunnerFactory\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBePublic [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBePublic\"];\nCategory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Category.java\" target=\"_blank\"];\nTestWatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestWatcher.java\" target=\"_blank\"];\nMethodRoadie [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/MethodRoadie.java\" target=\"_blank\"];\nSuite [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Suite.java\" target=\"_blank\"];\nAssignments [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/Assignments.java\" target=\"_blank\"];\nIgnoredClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/IgnoredClassRunner.java\" target=\"_blank\"];\nTestedOnSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/suppliers/TestedOnSupplier.java\" target=\"_blank\" color=red style=filled];\nTypeSafeMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/TypeSafeMatcher.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeARule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$FieldMustBeARule\"];\nFixMethodOrder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/FixMethodOrder.java\" target=\"_blank\"];\nFailedBefore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/FailedBefore.java\" target=\"_blank\"];\nRealSystem [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/RealSystem.java\" target=\"_blank\"];\nFrameworkField [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/FrameworkField.java\" target=\"_blank\"];\nThreadMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ThreadMXBean.java\" target=\"_blank\"];\norg_junit_internal_management_ReflectiveThreadMXBean_Holder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveThreadMXBean.java\" target=\"_blank\" label=\"ReflectiveThreadMXBean$Holder\"];\norg_junit_internal_requests_ClassRequest_CustomAllDefaultPossibilitiesBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\" label=\"ClassRequest$CustomAllDefaultPossibilitiesBuilder\"];\nRunAfters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/RunAfters.java\" target=\"_blank\"];\nStopwatch [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" color=red style=filled];\norg_junit_experimental_max_MaxHistory_RememberingListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" label=\"MaxHistory$RememberingListener\"];\norg_junit_runners_model_MultipleFailureException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/MultipleFailureException.java\" target=\"_blank\"];\nOrderable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Orderable.java\" target=\"_blank\"];\nParameterizedAssertionError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/ParameterizedAssertionError.java\" target=\"_blank\"];\nAnnotatable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/Annotatable.java\" target=\"_blank\"];\nTestWatchman [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestWatchman.java\" target=\"_blank\"];\nDescribable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Describable.java\" target=\"_blank\"];\nRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Runner.java\" target=\"_blank\"];\nTestName [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestName.java\" target=\"_blank\"];\nBooleanSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/BooleanSupplier.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_FieldMustBeATestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$FieldMustBeATestRule\"];\norg_junit_runners_model_InitializationError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/InitializationError.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_RuleValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$RuleValidator\"];\nCategoryFilterFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/CategoryFilterFactory.java\" target=\"_blank\"];\nTextListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/TextListener.java\" target=\"_blank\"];\nTestMethod [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/TestMethod.java\" target=\"_blank\"];\norg_junit_runners_ParentRunner_ClassRuleCollector [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/ParentRunner.java\" target=\"_blank\" label=\"ParentRunner$ClassRuleCollector\"];\norg_junit_runners_Parameterized_Parameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\" label=\"Parameterized$Parameters\"];\nAssertionFailedError [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/AssertionFailedError.java\" target=\"_blank\"];\nPublicClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/PublicClassValidator.java\" target=\"_blank\"];\norg_junit_experimental_categories_ExcludeCategories_ExcludesAny [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/ExcludeCategories.java\" target=\"_blank\" label=\"ExcludeCategories$ExcludesAny\"];\nJUnit4TestAdapterCache [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/JUnit4TestAdapterCache.java\" target=\"_blank\"];\nEnumSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/EnumSupplier.java\" target=\"_blank\"];\nTestListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestListener.java\" target=\"_blank\"];\nParentRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/ParentRunner.java\" target=\"_blank\"];\nEnclosed [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/runners/Enclosed.java\" target=\"_blank\"];\norg_junit_Assert [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Assert.java\" target=\"_blank\"];\norg_junit_experimental_max_MaxCore_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxCore.java\" target=\"_blank\" label=\"MaxCore$1\"];\nProtectable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/Protectable.java\" target=\"_blank\"];\nJUnit4ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java\" target=\"_blank\"];\nFilterFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactory.java\" target=\"_blank\"];\norg_junit_rules_Timeout_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Timeout.java\" target=\"_blank\" label=\"Timeout$Builder\"];\norg_junit_runner_manipulation_Ordering_Context [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$Context\"];\nMethodRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/MethodRule.java\" target=\"_blank\"];\norg_junit_rules_Stopwatch_InternalWatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/Stopwatch.java\" target=\"_blank\" label=\"Stopwatch$InternalWatcher\"];\nComparisonCompactor [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/ComparisonCompactor.java\" target=\"_blank\"];\norg_junit_experimental_theories_PotentialAssignment_CouldNotGenerateValueException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/PotentialAssignment.java\" target=\"_blank\" label=\"PotentialAssignment$CouldNotGenerateValueException\"];\nOrderWith [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/OrderWith.java\" target=\"_blank\"];\nFilterFactoryParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactoryParams.java\" target=\"_blank\"];\norg_junit_runners_model_TestClass [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" color=red style=filled];\nClasses [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/Classes.java\" target=\"_blank\"];\nDataPoint [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/DataPoint.java\" target=\"_blank\"];\nSortable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Sortable.java\" target=\"_blank\"];\nComputer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Computer.java\" target=\"_blank\"];\norg_junit_runners_model_TestClass_FieldComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" label=\"TestClass$FieldComparator\"];\nTestResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/framework/TestResult.java\" target=\"_blank\"];\nBaseTestRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/runner/BaseTestRunner.java\" target=\"_blank\"];\nSynchronizedRunListener [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/SynchronizedRunListener.java\" target=\"_blank\"];\nSerializableValueDescription [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/SerializableValueDescription.java\" target=\"_blank\"];\nAnnotatedBuilder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/builders/AnnotatedBuilder.java\" target=\"_blank\"];\nAlphanumeric [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Alphanumeric.java\" target=\"_blank\"];\nRuntimeMXBean [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/RuntimeMXBean.java\" target=\"_blank\"];\nFail [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/Fail.java\" target=\"_blank\"];\nParameterized [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Parameterized.java\" target=\"_blank\"];\norg_junit_validator_AnnotationsValidator_ClassValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationsValidator.java\" target=\"_blank\" label=\"AnnotationsValidator$ClassValidator\"];\nSorter [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Sorter.java\" target=\"_blank\" color=red style=filled];\nBlockJUnit4ClassRunnerWithParameters [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\"];\nErrorReportingRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/ErrorReportingRunner.java\" target=\"_blank\"];\nResultMatchers [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/results/ResultMatchers.java\" target=\"_blank\"];\nAllTests [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/AllTests.java\" target=\"_blank\"];\norg_junit_runners_Suite_SuiteClasses [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/Suite.java\" target=\"_blank\" label=\"Suite$SuiteClasses\"];\norg_junit_runners_parameterized_BlockJUnit4ClassRunnerWithParameters_RunBeforeParams [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java\" target=\"_blank\" label=\"BlockJUnit4ClassRunnerWithParameters$RunBeforeParams\"];\nNoTestsRemainException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/NoTestsRemainException.java\" target=\"_blank\"];\nAllMembersSupplier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java\" target=\"_blank\" color=red style=filled];\nFromDataPoints [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/FromDataPoints.java\" target=\"_blank\"];\nStoppedByUserException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/StoppedByUserException.java\" target=\"_blank\"];\nTestedOn [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/suppliers/TestedOn.java\" target=\"_blank\"];\nRuleMemberValidator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\"];\nDataPoints [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/DataPoints.java\" target=\"_blank\"];\nCategories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/categories/Categories.java\" target=\"_blank\" color=red style=filled];\nMaxHistory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" color=red style=filled];\nTestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TestRule.java\" target=\"_blank\"];\nRunBefores [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/RunBefores.java\" target=\"_blank\"];\nJUnit38ClassRunner [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java\" target=\"_blank\" color=red style=filled];\nOrderer [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Orderer.java\" target=\"_blank\" color=red style=filled];\norg_junit_runner_manipulation_Filter_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Filter.java\" target=\"_blank\" label=\"Filter$1\"];\nRepeatedTest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/extensions/RepeatedTest.java\" target=\"_blank\"];\nPotentialAssignment [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/theories/PotentialAssignment.java\" target=\"_blank\"];\norg_junit_internal_management_ManagementFactory_RuntimeHolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ManagementFactory.java\" target=\"_blank\" label=\"ManagementFactory$RuntimeHolder\"];\nAnnotationValidatorFactory [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/validator/AnnotationValidatorFactory.java\" target=\"_blank\"];\norg_junit_rules_TemporaryFolder_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TemporaryFolder.java\" target=\"_blank\" label=\"TemporaryFolder$Builder\"];\norg_junit_internal_management_ReflectiveRuntimeMXBean_Holder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/management/ReflectiveRuntimeMXBean.java\" target=\"_blank\" label=\"ReflectiveRuntimeMXBean$Holder\"];\nExpectedException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/ExpectedException.java\" target=\"_blank\" color=red style=filled];\norg_junit_runners_RuleContainer_RuleEntry [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/RuleContainer.java\" target=\"_blank\" label=\"RuleContainer$RuleEntry\"];\norg_junit_internal_runners_model_MultipleFailureException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/MultipleFailureException.java\" target=\"_blank\"];\nVersion [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/junit/runner/Version.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MethodMustBeATestRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MethodMustBeATestRule\"];\norg_junit_experimental_max_MaxHistory_TestComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/MaxHistory.java\" target=\"_blank\" label=\"MaxHistory$TestComparator\"];\norg_junit_internal_runners_rules_RuleMemberValidator_Builder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$Builder\"];\norg_junit_runners_model_TestClass_MethodComparator [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runners/model/TestClass.java\" target=\"_blank\" label=\"TestClass$MethodComparator\"];\nExpectException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/statements/ExpectException.java\" target=\"_blank\"];\norg_junit_internal_runners_rules_RuleMemberValidator_MemberMustBeNonStaticOrAlsoClassRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java\" target=\"_blank\" label=\"RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule\"];\norg_junit_runner_manipulation_Ordering_1 [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/manipulation/Ordering.java\" target=\"_blank\" label=\"Ordering$1\"];\nReflectiveCallable [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/runners/model/ReflectiveCallable.java\" target=\"_blank\"];\nRuleChain [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/RuleChain.java\" target=\"_blank\"];\nCouldNotReadCoreException [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/experimental/max/CouldNotReadCoreException.java\" target=\"_blank\"];\nRule [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/Rule.java\" target=\"_blank\"];\nThrowableCauseMatcher [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/matchers/ThrowableCauseMatcher.java\" target=\"_blank\"];\nOrderingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/OrderingRequest.java\" target=\"_blank\"];\nRunNotifier [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/notification/RunNotifier.java\" target=\"_blank\"];\nTemporaryFolder [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/rules/TemporaryFolder.java\" target=\"_blank\" color=red style=filled];\n}",
+ "hasEdges": false
},
- "classRelationshipsToRemove" : {
- "cycleCount" : 25,
- "relationshipsToRemoveCount" : 47,
- "hasRelationships" : true,
- "relationships" : [ {
- "sourceClass" : "org.junit.Assert",
- "targetClass" : "org.junit.ComparisonFailure",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Assert → ComparisonFailure : 1",
- "priority" : 1,
- "cycleCount" : 3,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.Assert",
- "targetClass" : "org.junit.internal.ExactComparisonCriteria",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Assert → ExactComparisonCriteria : 1",
- "priority" : 2,
- "cycleCount" : 2,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 3
- }, {
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.runner.JUnitCore",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → JUnitCore : 1",
- "priority" : 3,
- "cycleCount" : 2,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.InexactComparisonCriteria",
- "targetClass" : "org.junit.Assert",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "InexactComparisonCriteria → Assert : 2",
- "priority" : 4,
- "cycleCount" : 2,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 3
- }, {
- "sourceClass" : "org.junit.ComparisonFailure$ComparisonCompactor$DiffExtractor",
- "targetClass" : "org.junit.ComparisonFailure$ComparisonCompactor",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "ComparisonFailure$ComparisonCompactor$DiffExtractor → ComparisonFailure$ComparisonCompactor* : 2",
- "priority" : 5,
- "cycleCount" : 2,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.ComparisonCriteria",
- "targetClass" : "org.junit.Assert",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "ComparisonCriteria → Assert : 3",
- "priority" : 6,
- "cycleCount" : 2,
- "effortRank" : 3,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 3
- }, {
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.FilterRequest",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → FilterRequest : 1",
- "priority" : 7,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 4
- }, {
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.SortingRequest",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → SortingRequest : 1",
- "priority" : 8,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 4
- }, {
- "sourceClass" : "org.junit.runner.notification.RunListener",
- "targetClass" : "org.junit.runner.Result",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RunListener → Result : 1",
- "priority" : 9,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 3
- }, {
- "sourceClass" : "org.junit.runners.model.MultipleFailureException",
- "targetClass" : "org.junit.internal.runners.model.MultipleFailureException",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "MultipleFailureException → MultipleFailureException : 1",
- "priority" : 10,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : true,
- "packageCycleCount" : 3
- }, {
- "sourceClass" : "org.junit.internal.requests.MemoizingRequest",
- "targetClass" : "org.junit.runner.Request",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "MemoizingRequest → Request* : 1",
- "priority" : 11,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 4
- }, {
- "sourceClass" : "junit.framework.Test",
- "targetClass" : "junit.framework.TestResult",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Test* → TestResult : 1",
- "priority" : 12,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.categories.Categories",
- "targetClass" : "org.junit.experimental.categories.Categories$CategoryFilter",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Categories* → Categories$CategoryFilter : 1",
- "priority" : 13,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.max.MaxHistory",
- "targetClass" : "org.junit.experimental.max.MaxHistory$TestComparator",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "MaxHistory* → MaxHistory$TestComparator : 1",
- "priority" : 14,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Filter",
- "targetClass" : "org.junit.runner.manipulation.Filter$1",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Filter* → Filter$1 : 1",
- "priority" : 15,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.theories.internal.AllMembersSupplier$MethodParameterValue",
- "targetClass" : "org.junit.experimental.theories.internal.AllMembersSupplier",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "AllMembersSupplier$MethodParameterValue → AllMembersSupplier* : 1",
- "priority" : 16,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Filterable",
- "targetClass" : "org.junit.runner.manipulation.Filter",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "Filterable → Filter* : 1",
- "priority" : 17,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Orderable",
- "targetClass" : "org.junit.runner.manipulation.Orderer",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "Orderable → Orderer* : 1",
- "priority" : 18,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Ordering",
- "targetClass" : "org.junit.runner.manipulation.Orderer",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "Ordering → Orderer* : 1",
- "priority" : 19,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Sortable",
- "targetClass" : "org.junit.runner.manipulation.Sorter",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "Sortable → Sorter* : 1",
- "priority" : 20,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator$FieldMustBeARule",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RuleMemberValidator → RuleMemberValidator$FieldMustBeARule : 1",
- "priority" : 21,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator$MethodMustBeARule",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RuleMemberValidator → RuleMemberValidator$MethodMustBeARule : 1",
- "priority" : 22,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator$MethodMustBeATestRule",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RuleMemberValidator$MethodMustBeATestRule → RuleMemberValidator : 1",
- "priority" : 23,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator$FieldMustBeATestRule",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RuleMemberValidator$FieldMustBeATestRule → RuleMemberValidator : 1",
- "priority" : 24,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.Throwables$State",
- "targetClass" : "org.junit.internal.Throwables$State$1",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Throwables$State → Throwables$State$1 : 1",
- "priority" : 25,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.Throwables$State$2",
- "targetClass" : "org.junit.internal.Throwables$State",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Throwables$State$2 → Throwables$State : 1",
- "priority" : 26,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.Throwables$State$3",
- "targetClass" : "org.junit.internal.Throwables$State",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Throwables$State$3 → Throwables$State : 1",
- "priority" : 27,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.Throwables$State",
- "targetClass" : "org.junit.internal.Throwables$State$4",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Throwables$State → Throwables$State$4 : 1",
- "priority" : 28,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.manipulation.Ordering$Factory",
- "targetClass" : "org.junit.runner.manipulation.Ordering",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Ordering$Factory → Ordering : 1",
- "priority" : 29,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.notification.RunNotifier$SafeNotifier",
- "targetClass" : "org.junit.runner.notification.RunNotifier",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RunNotifier$SafeNotifier → RunNotifier : 1",
- "priority" : 30,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.Result$Listener",
- "targetClass" : "org.junit.runner.Result",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Result$Listener → Result : 1",
- "priority" : 31,
- "cycleCount" : 1,
- "effortRank" : 1,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.theories.suppliers.TestedOnSupplier",
- "targetClass" : "org.junit.experimental.theories.suppliers.TestedOn",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "TestedOnSupplier* → TestedOn : 2",
- "priority" : 32,
- "cycleCount" : 1,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "junit.framework.ComparisonCompactor",
- "targetClass" : "junit.framework.Assert",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "ComparisonCompactor → Assert* : 2",
- "priority" : 33,
- "cycleCount" : 1,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.statements.FailOnTimeout$Builder",
- "targetClass" : "org.junit.internal.runners.statements.FailOnTimeout",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "FailOnTimeout$Builder → FailOnTimeout* : 2",
- "priority" : 34,
- "cycleCount" : 1,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator$Builder",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "RuleMemberValidator$Builder → RuleMemberValidator : 2",
- "priority" : 35,
- "cycleCount" : 1,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.runners.rules.RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule",
- "targetClass" : "org.junit.internal.runners.rules.RuleMemberValidator",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule → RuleMemberValidator : 2",
- "priority" : 36,
- "cycleCount" : 1,
- "effortRank" : 2,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.requests.OrderingRequest",
- "targetClass" : "org.junit.runner.Request",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 3,
- "renderedLabel" : "OrderingRequest → Request* : 3",
- "priority" : 37,
- "cycleCount" : 1,
- "effortRank" : 3,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 4
- }, {
- "sourceClass" : "org.junit.rules.TemporaryFolder",
- "targetClass" : "org.junit.rules.TemporaryFolder$Builder",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "TemporaryFolder* → TemporaryFolder$Builder : 3",
- "priority" : 38,
- "cycleCount" : 1,
- "effortRank" : 3,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.max.MaxHistory$RememberingListener",
- "targetClass" : "org.junit.experimental.max.MaxHistory",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 3,
- "renderedLabel" : "MaxHistory$RememberingListener → MaxHistory* : 3",
- "priority" : 39,
- "cycleCount" : 1,
- "effortRank" : 3,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.rules.ExpectedException$ExpectedExceptionStatement",
- "targetClass" : "org.junit.rules.ExpectedException",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 3,
- "renderedLabel" : "ExpectedException$ExpectedExceptionStatement → ExpectedException* : 3",
- "priority" : 40,
- "cycleCount" : 1,
- "effortRank" : 3,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.experimental.theories.internal.SpecificDataPointsSupplier",
- "targetClass" : "org.junit.experimental.theories.FromDataPoints",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "SpecificDataPointsSupplier* → FromDataPoints : 4",
- "priority" : 41,
- "cycleCount" : 1,
- "effortRank" : 4,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 1
- }, {
- "sourceClass" : "junit.framework.JUnit4TestAdapter",
- "targetClass" : "junit.framework.JUnit4TestAdapterCache",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 5,
- "renderedLabel" : "JUnit4TestAdapter* → JUnit4TestAdapterCache : 5",
- "priority" : 42,
- "cycleCount" : 1,
- "effortRank" : 5,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.internal.Throwables$State",
- "targetClass" : "org.junit.internal.Throwables",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 5,
- "renderedLabel" : "Throwables$State → Throwables : 5",
- "priority" : 43,
- "cycleCount" : 1,
- "effortRank" : 5,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.rules.Timeout",
- "targetClass" : "org.junit.rules.Timeout$Builder",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "Timeout* → Timeout$Builder : 6",
- "priority" : 44,
- "cycleCount" : 1,
- "effortRank" : 6,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "junit.framework.TestCase",
- "targetClass" : "junit.framework.TestResult",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "TestCase → TestResult : 6",
- "priority" : 45,
- "cycleCount" : 1,
- "effortRank" : 6,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.runner.Result",
- "targetClass" : "org.junit.runner.Result$SerializedForm",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "Result → Result$SerializedForm : 6",
- "priority" : 46,
- "cycleCount" : 1,
- "effortRank" : 6,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- }, {
- "sourceClass" : "org.junit.rules.Stopwatch$InternalWatcher",
- "targetClass" : "org.junit.rules.Stopwatch",
- "sourceUrl" : null,
- "targetUrl" : null,
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 12,
- "renderedLabel" : "Stopwatch$InternalWatcher → Stopwatch* : 12",
- "priority" : 47,
- "cycleCount" : 1,
- "effortRank" : 12,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- },
- "packageMap" : {
- "graphId" : "packageGraph",
- "classCount" : 32,
- "relationshipCount" : 125,
- "dotThreshold" : 4000,
- "dotThresholdExceeded" : false,
- "dot" : "strict digraph G {\npackage_9bf1e82bbcacae569c713bba -> package_08fe06d73182d2aba49f0a3b [ label = \"29\" weight = \"29\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_63ec0cff5f640f6c4bea0fbf [ label = \"10\" weight = \"10\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_430407bac0561c25bf36889d [ label = \"39\" weight = \"39\" color = \"red\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_586bd4db20fb6988a9d4eaf8 [ label = \"7\" weight = \"7\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_ca30420dac77c856476365b1 [ label = \"5\" weight = \"5\" ];\npackage_e98a44e5d67bad99f479d7c6 -> package_08fe06d73182d2aba49f0a3b [ label = \"13\" weight = \"13\" ];\npackage_e98a44e5d67bad99f479d7c6 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_4a7bf01725342795a1658980 -> package_08fe06d73182d2aba49f0a3b [ label = \"49\" weight = \"49\" ];\npackage_4a7bf01725342795a1658980 -> package_e98a44e5d67bad99f479d7c6 [ label = \"6\" weight = \"6\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_ca30420dac77c856476365b1 [ label = \"22\" weight = \"22\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_0d5cc855f96914d3926ad59c [ label = \"3\" weight = \"3\" ];\npackage_ecd46349524a87b5d286d241 -> package_77ce60de3666f8dc6de1e090 [ label = \"3\" weight = \"3\" ];\npackage_ecd46349524a87b5d286d241 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"6\" weight = \"6\" ];\npackage_ecd46349524a87b5d286d241 -> package_430407bac0561c25bf36889d [ label = \"16\" weight = \"16\" ];\npackage_ecd46349524a87b5d286d241 -> package_4b999d8089061c322291f538 [ label = \"5\" weight = \"5\" ];\npackage_ecd46349524a87b5d286d241 -> package_3a322087a44efafbd4368a08 [ label = \"5\" weight = \"5\" ];\npackage_ecd46349524a87b5d286d241 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_430407bac0561c25bf36889d [ label = \"68\" weight = \"68\" ];\npackage_ad0c39b57276a6da897dffac -> package_2a0e4fa3bf7e37ca1b867475 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_3a322087a44efafbd4368a08 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_ad0c39b57276a6da897dffac -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_08fe06d73182d2aba49f0a3b [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_586bd4db20fb6988a9d4eaf8 [ label = \"4\" weight = \"4\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_430407bac0561c25bf36889d [ label = \"11\" weight = \"11\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_77ce60de3666f8dc6de1e090 [ label = \"3\" weight = \"3\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_3a322087a44efafbd4368a08 [ label = \"3\" weight = \"3\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"8\" weight = \"8\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_430407bac0561c25bf36889d [ label = \"12\" weight = \"12\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" ];\npackage_9d7b823b1681ca5a7ca0d3c3 -> package_77ce60de3666f8dc6de1e090 [ label = \"2\" weight = \"2\" ];\npackage_9d7b823b1681ca5a7ca0d3c3 -> package_3a322087a44efafbd4368a08 [ label = \"1\" weight = \"1\" ];\npackage_8121c686a17bf5f549e393d6 -> package_2c56d155865671623aa3e3cd [ label = \"13\" weight = \"13\" color = \"red\" ];\npackage_2c56d155865671623aa3e3cd -> package_8121c686a17bf5f549e393d6 [ label = \"106\" weight = \"106\" ];\npackage_2c56d155865671623aa3e3cd -> package_3a322087a44efafbd4368a08 [ label = \"44\" weight = \"44\" ];\npackage_2c56d155865671623aa3e3cd -> package_57c57c07a5bca0ee4c17b142 [ label = \"1\" weight = \"1\" ];\npackage_43a57afdb19564533e19988f -> package_8121c686a17bf5f549e393d6 [ label = \"11\" weight = \"11\" ];\npackage_8121c686a17bf5f549e393d6 -> package_77ce60de3666f8dc6de1e090 [ label = \"12\" weight = \"12\" ];\npackage_8121c686a17bf5f549e393d6 -> package_3a322087a44efafbd4368a08 [ label = \"39\" weight = \"39\" ];\npackage_8121c686a17bf5f549e393d6 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_8121c686a17bf5f549e393d6 -> package_57c57c07a5bca0ee4c17b142 [ label = \"3\" weight = \"3\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_529853b483d236ddde25a3d4 -> package_3a322087a44efafbd4368a08 [ label = \"14\" weight = \"14\" ];\npackage_529853b483d236ddde25a3d4 -> package_430407bac0561c25bf36889d [ label = \"15\" weight = \"15\" ];\npackage_529853b483d236ddde25a3d4 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"2\" weight = \"2\" ];\npackage_529853b483d236ddde25a3d4 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_529853b483d236ddde25a3d4 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" ];\npackage_ca30420dac77c856476365b1 -> package_57c57c07a5bca0ee4c17b142 [ label = \"8\" weight = \"8\" color = \"red\" ];\npackage_f77a9a3ce2a59ef8ddf2c7a8 -> package_ca30420dac77c856476365b1 [ label = \"3\" weight = \"3\" ];\npackage_ebb7dcde9205bd371607c09b -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" ];\npackage_ca30420dac77c856476365b1 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_3a322087a44efafbd4368a08 [ label = \"2\" weight = \"2\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_430407bac0561c25bf36889d [ label = \"25\" weight = \"25\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_529853b483d236ddde25a3d4 [ label = \"3\" weight = \"3\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"11\" weight = \"11\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_884afb9c851443f871179dc0 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"34\" weight = \"34\" ];\npackage_884afb9c851443f871179dc0 -> package_430407bac0561c25bf36889d [ label = \"41\" weight = \"41\" color = \"red\" ];\npackage_884afb9c851443f871179dc0 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_884afb9c851443f871179dc0 -> package_3a322087a44efafbd4368a08 [ label = \"5\" weight = \"5\" color = \"red\" ];\npackage_884afb9c851443f871179dc0 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"29\" weight = \"29\" ];\npackage_884afb9c851443f871179dc0 -> package_08fe06d73182d2aba49f0a3b [ label = \"57\" weight = \"57\" ];\npackage_884afb9c851443f871179dc0 -> package_9bf1e82bbcacae569c713bba [ label = \"4\" weight = \"4\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"11\" weight = \"11\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_430407bac0561c25bf36889d [ label = \"2\" weight = \"2\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_3a322087a44efafbd4368a08 [ label = \"6\" weight = \"6\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_2f7cd55814b0fa522b0d505b -> package_3a322087a44efafbd4368a08 [ label = \"28\" weight = \"28\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_3a322087a44efafbd4368a08 [ label = \"36\" weight = \"36\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_f77a9a3ce2a59ef8ddf2c7a8 [ label = \"4\" weight = \"4\" ];\npackage_884afb9c851443f871179dc0 -> package_57c57c07a5bca0ee4c17b142 [ label = \"5\" weight = \"5\" ];\npackage_ca30420dac77c856476365b1 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"7\" weight = \"7\" ];\npackage_ca30420dac77c856476365b1 -> package_430407bac0561c25bf36889d [ label = \"12\" weight = \"12\" color = \"red\" ];\npackage_d6156cb8cc463f7c0a8642e6 -> package_ebb7dcde9205bd371607c09b [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_f77a9a3ce2a59ef8ddf2c7a8 [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_3a322087a44efafbd4368a08 [ label = \"49\" weight = \"49\" ];\npackage_0ce60471b8c652f16eb24524 -> package_430407bac0561c25bf36889d [ label = \"33\" weight = \"33\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ca30420dac77c856476365b1 [ label = \"7\" weight = \"7\" ];\npackage_0ce60471b8c652f16eb24524 -> package_0d5cc855f96914d3926ad59c [ label = \"1\" weight = \"1\" ];\npackage_0ce60471b8c652f16eb24524 -> package_57c57c07a5bca0ee4c17b142 [ label = \"8\" weight = \"8\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ebb7dcde9205bd371607c09b [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_d6156cb8cc463f7c0a8642e6 [ label = \"1\" weight = \"1\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ccdae54bae7eac0c5941bcdb [ label = \"4\" weight = \"4\" ];\npackage_430407bac0561c25bf36889d -> package_3a322087a44efafbd4368a08 [ label = \"8\" weight = \"8\" ];\npackage_430407bac0561c25bf36889d -> package_63ec0cff5f640f6c4bea0fbf [ label = \"9\" weight = \"9\" ];\npackage_430407bac0561c25bf36889d -> package_ca30420dac77c856476365b1 [ label = \"6\" weight = \"6\" ];\npackage_430407bac0561c25bf36889d -> package_586bd4db20fb6988a9d4eaf8 [ label = \"26\" weight = \"26\" ];\npackage_430407bac0561c25bf36889d -> package_e98a44e5d67bad99f479d7c6 [ label = \"2\" weight = \"2\" ];\npackage_430407bac0561c25bf36889d -> package_08fe06d73182d2aba49f0a3b [ label = \"1\" weight = \"1\" ];\npackage_430407bac0561c25bf36889d -> package_884afb9c851443f871179dc0 [ label = \"3\" weight = \"3\" ];\npackage_63ec0cff5f640f6c4bea0fbf -> package_430407bac0561c25bf36889d [ label = \"44\" weight = \"44\" color = \"red\" ];\npackage_586bd4db20fb6988a9d4eaf8 -> package_430407bac0561c25bf36889d [ label = \"25\" weight = \"25\" color = \"red\" ];\npackage_586bd4db20fb6988a9d4eaf8 -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_430407bac0561c25bf36889d -> package_4b999d8089061c322291f538 [ label = \"3\" weight = \"3\" ];\npackage_430407bac0561c25bf36889d -> package_2a0e4fa3bf7e37ca1b867475 [ label = \"5\" weight = \"5\" color = \"red\" ];\npackage_430407bac0561c25bf36889d -> package_529853b483d236ddde25a3d4 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_3a322087a44efafbd4368a08 [ label = \"160\" weight = \"160\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_4b999d8089061c322291f538 [ label = \"8\" weight = \"8\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_430407bac0561c25bf36889d [ label = \"40\" weight = \"40\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"13\" weight = \"13\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_2f7cd55814b0fa522b0d505b [ label = \"4\" weight = \"4\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_25c1ee20ce58bbdc8d3e4e83 [ label = \"13\" weight = \"13\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_ccdae54bae7eac0c5941bcdb [ label = \"10\" weight = \"10\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_57c57c07a5bca0ee4c17b142 [ label = \"10\" weight = \"10\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_0ce60471b8c652f16eb24524 [ label = \"31\" weight = \"31\" ];\npackage_3a322087a44efafbd4368a08 -> package_25c1ee20ce58bbdc8d3e4e83 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_3a322087a44efafbd4368a08 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_3a322087a44efafbd4368a08 -> package_57c57c07a5bca0ee4c17b142 [ label = \"2\" weight = \"2\" ];\npackage_3a322087a44efafbd4368a08 -> package_430407bac0561c25bf36889d [ label = \"15\" weight = \"15\" color = \"red\" ];\npackage_3a322087a44efafbd4368a08 -> package_884afb9c851443f871179dc0 [ label = \"1\" weight = \"1\" ];\npackage_3a322087a44efafbd4368a08 -> package_4b999d8089061c322291f538 [ label = \"2\" weight = \"2\" ];\npackage_3a322087a44efafbd4368a08 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"4\" weight = \"4\" ];\npackage_7ece0e352e8696c73df41d29 -> package_77ce60de3666f8dc6de1e090 [ label = \"16\" weight = \"16\" color = \"red\" ];\npackage_7ece0e352e8696c73df41d29 -> package_3a322087a44efafbd4368a08 [ label = \"42\" weight = \"42\" ];\npackage_7ece0e352e8696c73df41d29 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"1\" weight = \"1\" ];\npackage_7ece0e352e8696c73df41d29 -> package_ccdae54bae7eac0c5941bcdb [ label = \"4\" weight = \"4\" ];\npackage_7ece0e352e8696c73df41d29 -> package_430407bac0561c25bf36889d [ label = \"2\" weight = \"2\" ];\npackage_7ece0e352e8696c73df41d29 -> package_ca30420dac77c856476365b1 [ label = \"3\" weight = \"3\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_7ece0e352e8696c73df41d29 [ label = \"15\" weight = \"15\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_ca30420dac77c856476365b1 [ label = \"6\" weight = \"6\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"17\" weight = \"17\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_529853b483d236ddde25a3d4 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_4b999d8089061c322291f538 -> package_3a322087a44efafbd4368a08 [ label = \"31\" weight = \"31\" color = \"red\" ];\npackage_77ce60de3666f8dc6de1e090 [label=\"org.junit.runners\" color=red style=filled];\npackage_8121c686a17bf5f549e393d6 [label=\"org.junit.experimental.theories\" color=red style=filled];\npackage_8ee2c1f7beac932dbb525a9a [label=\"org.junit.experimental\"];\npackage_2f7cd55814b0fa522b0d505b [label=\"org.junit.internal.runners.rules\"];\npackage_2a0e4fa3bf7e37ca1b867475 [label=\"org.junit.internal.requests\"];\npackage_6f19bfeb0acefc8cdf5f6c84 [label=\"org.junit.experimental.results\"];\npackage_25c1ee20ce58bbdc8d3e4e83 [label=\"org.junit.internal.runners.model\"];\npackage_529853b483d236ddde25a3d4 [label=\"org.junit.internal.builders\"];\npackage_4a7bf01725342795a1658980 [label=\"junit.textui\"];\npackage_ecd46349524a87b5d286d241 [label=\"org.junit.experimental.categories\"];\npackage_0d5cc855f96914d3926ad59c [label=\"org.junit.function\"];\npackage_2c56d155865671623aa3e3cd [label=\"org.junit.experimental.theories.internal\"];\npackage_7ece0e352e8696c73df41d29 [label=\"org.junit.runners.parameterized\"];\npackage_9bf1e82bbcacae569c713bba [label=\"junit.extensions\"];\npackage_ccdae54bae7eac0c5941bcdb [label=\"org.junit.internal.runners.statements\"];\npackage_ad0c39b57276a6da897dffac [label=\"org.junit.experimental.max\"];\npackage_586bd4db20fb6988a9d4eaf8 [label=\"org.junit.runner.notification\" color=red style=filled];\npackage_43a57afdb19564533e19988f [label=\"org.junit.experimental.theories.suppliers\"];\npackage_d6156cb8cc463f7c0a8642e6 [label=\"org.junit.matchers\"];\npackage_63ec0cff5f640f6c4bea0fbf [label=\"org.junit.runner.manipulation\"];\npackage_f77a9a3ce2a59ef8ddf2c7a8 [label=\"org.junit.internal.management\"];\npackage_ebb7dcde9205bd371607c09b [label=\"org.junit.internal.matchers\"];\npackage_9d7b823b1681ca5a7ca0d3c3 [label=\"org.junit.experimental.runners\"];\npackage_0ce60471b8c652f16eb24524 [label=\"org.junit.rules\"];\npackage_3a322087a44efafbd4368a08 [label=\"org.junit.runners.model\"];\npackage_ca30420dac77c856476365b1 [label=\"org.junit.internal\" color=red style=filled];\npackage_e98a44e5d67bad99f479d7c6 [label=\"junit.runner\"];\npackage_430407bac0561c25bf36889d [label=\"org.junit.runner\"];\npackage_57c57c07a5bca0ee4c17b142 [label=\"org.junit\"];\npackage_4b999d8089061c322291f538 [label=\"org.junit.validator\"];\npackage_08fe06d73182d2aba49f0a3b [label=\"junit.framework\"];\npackage_884afb9c851443f871179dc0 [label=\"org.junit.internal.runners\" color=red style=filled];\n}",
- "hasEdges" : true
- },
- "packageRelationshipsToRemove" : {
- "cycleCount" : 5,
- "relationshipsToRemoveCount" : 18,
- "hasRelationships" : true,
- "relationships" : [ {
- "sourcePackage" : "org.junit.internal",
- "targetPackage" : "org.junit.runners",
- "sourceMarked" : true,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "org.junit.internal* → org.junit.runners* : 1",
- "priority" : 1,
- "cycleCount" : 4,
- "effortRank" : 1,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.internal.MethodSorter",
- "targetClass" : "org.junit.runners.MethodSorters",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "MethodSorter → MethodSorters : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runners",
- "targetPackage" : "org.junit.internal.builders",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "org.junit.runners* → org.junit.internal.builders : 1",
- "priority" : 2,
- "cycleCount" : 4,
- "effortRank" : 1,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runners.Suite",
- "targetClass" : "org.junit.internal.builders.AllDefaultPossibilitiesBuilder",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Suite → AllDefaultPossibilitiesBuilder : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runner",
- "targetPackage" : "org.junit.internal.builders",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "org.junit.runner → org.junit.internal.builders : 2",
- "priority" : 3,
- "cycleCount" : 4,
- "effortRank" : 2,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.builders.AllDefaultPossibilitiesBuilder",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "Request* → AllDefaultPossibilitiesBuilder : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runner",
- "targetPackage" : "org.junit.internal.requests",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 5,
- "renderedLabel" : "org.junit.runner → org.junit.internal.requests : 5",
- "priority" : 4,
- "cycleCount" : 4,
- "effortRank" : 5,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.SortingRequest",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → SortingRequest : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ "classRelationshipsToRemove": {
+ "cycleCount": 25,
+ "relationshipsToRemoveCount": 47,
+ "hasRelationships": true,
+ "relationships": [
+ {
+ "sourceClass": "org.junit.Assert",
+ "targetClass": "org.junit.ComparisonFailure",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/Assert.java",
+ "targetClassPath": "src/main/java/org/junit/ComparisonFailure.java",
+ "simpleSourceClassName": "Assert",
+ "simpleTargetClassName": "ComparisonFailure",
+ "priority": 1,
+ "cycleCount": 3,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.ClassRequest",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "Request* → ClassRequest : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.Assert",
+ "targetClass": "org.junit.internal.ExactComparisonCriteria",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/Assert.java",
+ "targetClassPath": "src/main/java/org/junit/internal/ExactComparisonCriteria.java",
+ "simpleSourceClassName": "Assert",
+ "simpleTargetClassName": "ExactComparisonCriteria",
+ "priority": 2,
+ "cycleCount": 2,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 3
},
-{
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.FilterRequest",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → FilterRequest : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.runner.JUnitCore",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/runner/JUnitCore.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "JUnitCore",
+ "priority": 3,
+ "cycleCount": 2,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.Request",
- "targetClass" : "org.junit.internal.requests.OrderingRequest",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Request* → OrderingRequest : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.internal",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 12,
- "renderedLabel" : "org.junit.internal* → org.junit.runner : 12",
- "priority" : 5,
- "cycleCount" : 4,
- "effortRank" : 12,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.internal.TextListener",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "TextListener → Description : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.InexactComparisonCriteria",
+ "targetClass": "org.junit.Assert",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/InexactComparisonCriteria.java",
+ "targetClassPath": "src/main/java/org/junit/Assert.java",
+ "simpleSourceClassName": "InexactComparisonCriteria",
+ "simpleTargetClassName": "Assert",
+ "priority": 4,
+ "cycleCount": 2,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 3
},
-{
- "sourceClass" : "org.junit.internal.TextListener",
- "targetClass" : "org.junit.runner.Result",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 10,
- "renderedLabel" : "TextListener → Result : 10",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit",
- "targetPackage" : "org.junit.runners",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "org.junit → org.junit.runners* : 1",
- "priority" : 6,
- "cycleCount" : 3,
- "effortRank" : 1,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.FixMethodOrder",
- "targetClass" : "org.junit.runners.MethodSorters",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "FixMethodOrder → MethodSorters : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runner.notification",
- "targetPackage" : "org.junit.internal",
- "sourceMarked" : true,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "org.junit.runner.notification* → org.junit.internal* : 2",
- "priority" : 7,
- "cycleCount" : 3,
- "effortRank" : 2,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runner.notification.Failure",
- "targetClass" : "org.junit.internal.Throwables",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "Failure* → Throwables : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runners.model",
- "targetPackage" : "org.junit.internal.runners.model",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "org.junit.runners.model → org.junit.internal.runners.model : 2",
- "priority" : 8,
- "cycleCount" : 3,
- "effortRank" : 2,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runners.model.FrameworkMethod",
- "targetClass" : "org.junit.internal.runners.model.ReflectiveCallable",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "FrameworkMethod* → ReflectiveCallable : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.ComparisonFailure$ComparisonCompactor$DiffExtractor",
+ "targetClass": "org.junit.ComparisonFailure$ComparisonCompactor",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/ComparisonFailure.java",
+ "targetClassPath": "src/main/java/org/junit/ComparisonFailure.java",
+ "simpleSourceClassName": "ComparisonFailure$ComparisonCompactor$DiffExtractor",
+ "simpleTargetClassName": "ComparisonFailure$ComparisonCompactor",
+ "priority": 5,
+ "cycleCount": 2,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runners.model.MultipleFailureException",
- "targetClass" : "org.junit.internal.runners.model.MultipleFailureException",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "MultipleFailureException → MultipleFailureException : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.internal.runners",
- "targetPackage" : "org.junit.runners.model",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 5,
- "renderedLabel" : "org.junit.internal.runners* → org.junit.runners.model : 5",
- "priority" : 9,
- "cycleCount" : 3,
- "effortRank" : 5,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.internal.runners.ErrorReportingRunner",
- "targetClass" : "org.junit.runners.model.InvalidTestClassError",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "ErrorReportingRunner → InvalidTestClassError : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.ComparisonCriteria",
+ "targetClass": "org.junit.Assert",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/internal/ComparisonCriteria.java",
+ "targetClassPath": "src/main/java/org/junit/Assert.java",
+ "simpleSourceClassName": "ComparisonCriteria",
+ "simpleTargetClassName": "Assert",
+ "priority": 6,
+ "cycleCount": 2,
+ "effortRank": 3,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 3
},
-{
- "sourceClass" : "org.junit.internal.runners.ErrorReportingRunner",
- "targetClass" : "org.junit.runners.model.InitializationError",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "ErrorReportingRunner → InitializationError : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.FilterRequest",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/FilterRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "FilterRequest",
+ "priority": 7,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 4
},
-{
- "sourceClass" : "org.junit.internal.runners.MethodRoadie",
- "targetClass" : "org.junit.runners.model.TestTimedOutException",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "MethodRoadie → TestTimedOutException : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.internal",
- "targetPackage" : "org.junit",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 8,
- "renderedLabel" : "org.junit.internal* → org.junit : 8",
- "priority" : 10,
- "cycleCount" : 3,
- "effortRank" : 8,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.internal.InexactComparisonCriteria",
- "targetClass" : "org.junit.Assert",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "InexactComparisonCriteria → Assert : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.SortingRequest",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/SortingRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "SortingRequest",
+ "priority": 8,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 4
},
-{
- "sourceClass" : "org.junit.internal.ExactComparisonCriteria",
- "targetClass" : "org.junit.Assert",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "ExactComparisonCriteria → Assert : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.notification.RunListener",
+ "targetClass": "org.junit.runner.Result",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "RunListener",
+ "simpleTargetClassName": "Result",
+ "priority": 9,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 3
},
-{
- "sourceClass" : "org.junit.internal.ComparisonCriteria",
- "targetClass" : "org.junit.Assert",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "ComparisonCriteria → Assert : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runners.model.MultipleFailureException",
+ "targetClass": "org.junit.internal.runners.model.MultipleFailureException",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/MultipleFailureException.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/model/MultipleFailureException.java",
+ "simpleSourceClassName": "MultipleFailureException",
+ "simpleTargetClassName": "MultipleFailureException",
+ "priority": 10,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": true,
+ "packageCycleCount": 3
},
-{
- "sourceClass" : "org.junit.internal.MethodSorter",
- "targetClass" : "org.junit.FixMethodOrder",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "MethodSorter → FixMethodOrder : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runners.model",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 15,
- "renderedLabel" : "org.junit.runners.model → org.junit.runner : 15",
- "priority" : 11,
- "cycleCount" : 3,
- "effortRank" : 15,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runners.model.RunnerBuilder",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "RunnerBuilder* → Description : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.requests.MemoizingRequest",
+ "targetClass": "org.junit.runner.Request",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/requests/MemoizingRequest.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Request.java",
+ "simpleSourceClassName": "MemoizingRequest",
+ "simpleTargetClassName": "Request",
+ "priority": 11,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 4
},
-{
- "sourceClass" : "org.junit.runners.model.RunnerBuilder",
- "targetClass" : "org.junit.runner.Runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 11,
- "renderedLabel" : "RunnerBuilder* → Runner : 11",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "junit.framework.Test",
+ "targetClass": "junit.framework.TestResult",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/junit/framework/Test.java",
+ "targetClassPath": "src/main/java/junit/framework/TestResult.java",
+ "simpleSourceClassName": "Test",
+ "simpleTargetClassName": "TestResult",
+ "priority": 12,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runners.model.RunnerBuilder",
- "targetClass" : "org.junit.runner.OrderWith",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "RunnerBuilder* → OrderWith : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runners.parameterized",
- "targetPackage" : "org.junit.runners",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 16,
- "renderedLabel" : "org.junit.runners.parameterized → org.junit.runners* : 16",
- "priority" : 12,
- "cycleCount" : 3,
- "effortRank" : 16,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
- "targetClass" : "org.junit.runners.Parameterized$Parameter",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "BlockJUnit4ClassRunnerWithParameters → Parameterized$Parameter : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.categories.Categories",
+ "targetClass": "org.junit.experimental.categories.Categories$CategoryFilter",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/experimental/categories/Categories.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/categories/Categories.java",
+ "simpleSourceClassName": "Categories",
+ "simpleTargetClassName": "Categories$CategoryFilter",
+ "priority": 13,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
- "targetClass" : "org.junit.runners.BlockJUnit4ClassRunner",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 5,
- "renderedLabel" : "BlockJUnit4ClassRunnerWithParameters → BlockJUnit4ClassRunner* : 5",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.max.MaxHistory",
+ "targetClass": "org.junit.experimental.max.MaxHistory$TestComparator",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/experimental/max/MaxHistory.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/max/MaxHistory.java",
+ "simpleSourceClassName": "MaxHistory",
+ "simpleTargetClassName": "MaxHistory$TestComparator",
+ "priority": 14,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
- "targetClass" : "org.junit.runners.ParentRunner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 8,
- "renderedLabel" : "BlockJUnit4ClassRunnerWithParameters → ParentRunner : 8",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runner.notification",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 25,
- "renderedLabel" : "org.junit.runner.notification* → org.junit.runner : 25",
- "priority" : 13,
- "cycleCount" : 3,
- "effortRank" : 25,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runner.notification.RunListener",
- "targetClass" : "org.junit.runner.Result",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RunListener → Result : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Filter",
+ "targetClass": "org.junit.runner.manipulation.Filter$1",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Filter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Filter.java",
+ "simpleSourceClassName": "Filter",
+ "simpleTargetClassName": "Filter$1",
+ "priority": 15,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.RunListener",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "RunListener → Description : 6",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.theories.internal.AllMembersSupplier$MethodParameterValue",
+ "targetClass": "org.junit.experimental.theories.internal.AllMembersSupplier",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java",
+ "simpleSourceClassName": "AllMembersSupplier$MethodParameterValue",
+ "simpleTargetClassName": "AllMembersSupplier",
+ "priority": 16,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.SynchronizedRunListener",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "SynchronizedRunListener → Description : 6",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Filterable",
+ "targetClass": "org.junit.runner.manipulation.Filter",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Filterable.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Filter.java",
+ "simpleSourceClassName": "Filterable",
+ "simpleTargetClassName": "Filter",
+ "priority": 17,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.RunNotifier",
- "targetClass" : "org.junit.runner.Result",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "RunNotifier → Result : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Orderable",
+ "targetClass": "org.junit.runner.manipulation.Orderer",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Orderable.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Orderer.java",
+ "simpleSourceClassName": "Orderable",
+ "simpleTargetClassName": "Orderer",
+ "priority": 18,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.Failure",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "Failure* → Description : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Ordering",
+ "targetClass": "org.junit.runner.manipulation.Orderer",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Orderer.java",
+ "simpleSourceClassName": "Ordering",
+ "simpleTargetClassName": "Orderer",
+ "priority": 19,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.RunNotifier",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 6,
- "renderedLabel" : "RunNotifier → Description : 6",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Sortable",
+ "targetClass": "org.junit.runner.manipulation.Sorter",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Sortable.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Sorter.java",
+ "simpleSourceClassName": "Sortable",
+ "simpleTargetClassName": "Sorter",
+ "priority": 20,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.runner.notification.SynchronizedRunListener",
- "targetClass" : "org.junit.runner.Result",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "SynchronizedRunListener → Result : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "junit.framework",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 39,
- "renderedLabel" : "junit.framework → org.junit.runner : 39",
- "priority" : 14,
- "cycleCount" : 3,
- "effortRank" : 39,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "junit.framework.JUnit4TestAdapter",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 13,
- "renderedLabel" : "JUnit4TestAdapter* → Description : 13",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator$FieldMustBeARule",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator",
+ "simpleTargetClassName": "RuleMemberValidator$FieldMustBeARule",
+ "priority": 21,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestAdapterCache",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 14,
- "renderedLabel" : "JUnit4TestAdapterCache → Description : 14",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator$MethodMustBeARule",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator",
+ "simpleTargetClassName": "RuleMemberValidator$MethodMustBeARule",
+ "priority": 22,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestCaseFacade",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "JUnit4TestCaseFacade → Description : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator$MethodMustBeATestRule",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator$MethodMustBeATestRule",
+ "simpleTargetClassName": "RuleMemberValidator",
+ "priority": 23,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestCaseFacade",
- "targetClass" : "org.junit.runner.Describable",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "JUnit4TestCaseFacade → Describable : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator$FieldMustBeATestRule",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator$FieldMustBeATestRule",
+ "simpleTargetClassName": "RuleMemberValidator",
+ "priority": 24,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestAdapter",
- "targetClass" : "org.junit.runner.Request",
- "sourceMarked" : true,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "JUnit4TestAdapter* → Request* : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.Throwables$State",
+ "targetClass": "org.junit.internal.Throwables$State$1",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Throwables$State",
+ "simpleTargetClassName": "Throwables$State$1",
+ "priority": 25,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestAdapter",
- "targetClass" : "org.junit.runner.Runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "JUnit4TestAdapter* → Runner : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.Throwables$State$2",
+ "targetClass": "org.junit.internal.Throwables$State",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Throwables$State$2",
+ "simpleTargetClassName": "Throwables$State",
+ "priority": 26,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "junit.framework.JUnit4TestAdapter",
- "targetClass" : "org.junit.runner.Describable",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "JUnit4TestAdapter* → Describable : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.internal.runners",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 41,
- "renderedLabel" : "org.junit.internal.runners* → org.junit.runner : 41",
- "priority" : 15,
- "cycleCount" : 3,
- "effortRank" : 41,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener",
- "targetClass" : "org.junit.runner.Describable",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "JUnit38ClassRunner$OldTestClassAdaptingListener → Describable : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.Throwables$State$3",
+ "targetClass": "org.junit.internal.Throwables$State",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Throwables$State$3",
+ "simpleTargetClassName": "Throwables$State",
+ "priority": 27,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.ErrorReportingRunner",
- "targetClass" : "org.junit.runner.Runner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "ErrorReportingRunner → Runner : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.Throwables$State",
+ "targetClass": "org.junit.internal.Throwables$State$4",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Throwables$State",
+ "simpleTargetClassName": "Throwables$State$4",
+ "priority": 28,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.ErrorReportingRunner",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 7,
- "renderedLabel" : "ErrorReportingRunner → Description : 7",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.manipulation.Ordering$Factory",
+ "targetClass": "org.junit.runner.manipulation.Ordering",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "targetClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "simpleSourceClassName": "Ordering$Factory",
+ "simpleTargetClassName": "Ordering",
+ "priority": 29,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit38ClassRunner",
- "targetClass" : "org.junit.runner.Describable",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 4,
- "renderedLabel" : "JUnit38ClassRunner* → Describable : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.notification.RunNotifier$SafeNotifier",
+ "targetClass": "org.junit.runner.notification.RunNotifier",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunNotifier.java",
+ "targetClassPath": "src/main/java/org/junit/runner/notification/RunNotifier.java",
+ "simpleSourceClassName": "RunNotifier$SafeNotifier",
+ "simpleTargetClassName": "RunNotifier",
+ "priority": 30,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit38ClassRunner",
- "targetClass" : "org.junit.runner.Runner",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "JUnit38ClassRunner* → Runner : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.Result$Listener",
+ "targetClass": "org.junit.runner.Result",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Result.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "Result$Listener",
+ "simpleTargetClassName": "Result",
+ "priority": 31,
+ "cycleCount": 1,
+ "effortRank": 1,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit4ClassRunner",
- "targetClass" : "org.junit.runner.Runner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "JUnit4ClassRunner → Runner : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.theories.suppliers.TestedOnSupplier",
+ "targetClass": "org.junit.experimental.theories.suppliers.TestedOn",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/suppliers/TestedOnSupplier.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/suppliers/TestedOn.java",
+ "simpleSourceClassName": "TestedOnSupplier",
+ "simpleTargetClassName": "TestedOn",
+ "priority": 32,
+ "cycleCount": 1,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit38ClassRunner",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 8,
- "renderedLabel" : "JUnit38ClassRunner* → Description : 8",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "junit.framework.ComparisonCompactor",
+ "targetClass": "junit.framework.Assert",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/junit/framework/ComparisonCompactor.java",
+ "targetClassPath": "src/main/java/junit/framework/Assert.java",
+ "simpleSourceClassName": "ComparisonCompactor",
+ "simpleTargetClassName": "Assert",
+ "priority": 33,
+ "cycleCount": 1,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "JUnit38ClassRunner$OldTestClassAdaptingListener → Description : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.statements.FailOnTimeout$Builder",
+ "targetClass": "org.junit.internal.runners.statements.FailOnTimeout",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java",
+ "simpleSourceClassName": "FailOnTimeout$Builder",
+ "simpleTargetClassName": "FailOnTimeout",
+ "priority": 34,
+ "cycleCount": 1,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.ClassRoadie",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "ClassRoadie → Description : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator$Builder",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator$Builder",
+ "simpleTargetClassName": "RuleMemberValidator",
+ "priority": 35,
+ "cycleCount": 1,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.JUnit4ClassRunner",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 8,
- "renderedLabel" : "JUnit4ClassRunner → Description : 8",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.runners.rules.RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule",
+ "targetClass": "org.junit.internal.runners.rules.RuleMemberValidator",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/rules/RuleMemberValidator.java",
+ "simpleSourceClassName": "RuleMemberValidator$MemberMustBeNonStaticOrAlsoClassRule",
+ "simpleTargetClassName": "RuleMemberValidator",
+ "priority": 36,
+ "cycleCount": 1,
+ "effortRank": 2,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.internal.runners.MethodRoadie",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 2,
- "renderedLabel" : "MethodRoadie → Description : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.validator",
- "targetPackage" : "org.junit.runners.model",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 31,
- "renderedLabel" : "org.junit.validator → org.junit.runners.model : 31",
- "priority" : 16,
- "cycleCount" : 2,
- "effortRank" : 31,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.validator.AnnotationsValidator$FieldValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "AnnotationsValidator$FieldValidator → TestClass* : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.requests.OrderingRequest",
+ "targetClass": "org.junit.runner.Request",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/internal/requests/OrderingRequest.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Request.java",
+ "simpleSourceClassName": "OrderingRequest",
+ "simpleTargetClassName": "Request",
+ "priority": 37,
+ "cycleCount": 1,
+ "effortRank": 3,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 4
},
-{
- "sourceClass" : "org.junit.validator.AnnotationValidator",
- "targetClass" : "org.junit.runners.model.FrameworkMethod",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "AnnotationValidator → FrameworkMethod* : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.rules.TemporaryFolder",
+ "targetClass": "org.junit.rules.TemporaryFolder$Builder",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/rules/TemporaryFolder.java",
+ "targetClassPath": "src/main/java/org/junit/rules/TemporaryFolder.java",
+ "simpleSourceClassName": "TemporaryFolder",
+ "simpleTargetClassName": "TemporaryFolder$Builder",
+ "priority": 38,
+ "cycleCount": 1,
+ "effortRank": 3,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$MethodValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "AnnotationsValidator$MethodValidator → TestClass* : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.max.MaxHistory$RememberingListener",
+ "targetClass": "org.junit.experimental.max.MaxHistory",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/experimental/max/MaxHistory.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/max/MaxHistory.java",
+ "simpleSourceClassName": "MaxHistory$RememberingListener",
+ "simpleTargetClassName": "MaxHistory",
+ "priority": 39,
+ "cycleCount": 1,
+ "effortRank": 3,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "AnnotationsValidator → TestClass* : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.rules.ExpectedException$ExpectedExceptionStatement",
+ "targetClass": "org.junit.rules.ExpectedException",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/rules/ExpectedException.java",
+ "targetClassPath": "src/main/java/org/junit/rules/ExpectedException.java",
+ "simpleSourceClassName": "ExpectedException$ExpectedExceptionStatement",
+ "simpleTargetClassName": "ExpectedException",
+ "priority": 40,
+ "cycleCount": 1,
+ "effortRank": 3,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$MethodValidator",
- "targetClass" : "org.junit.runners.model.FrameworkMethod",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 3,
- "renderedLabel" : "AnnotationsValidator$MethodValidator → FrameworkMethod* : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.experimental.theories.internal.SpecificDataPointsSupplier",
+ "targetClass": "org.junit.experimental.theories.FromDataPoints",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/FromDataPoints.java",
+ "simpleSourceClassName": "SpecificDataPointsSupplier",
+ "simpleTargetClassName": "FromDataPoints",
+ "priority": 41,
+ "cycleCount": 1,
+ "effortRank": 4,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 1
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$AnnotatableValidator",
- "targetClass" : "org.junit.runners.model.Annotatable",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 7,
- "renderedLabel" : "AnnotationsValidator$AnnotatableValidator → Annotatable : 7",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapter",
+ "targetClass": "junit.framework.JUnit4TestAdapterCache",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 5,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapter.java",
+ "targetClassPath": "src/main/java/junit/framework/JUnit4TestAdapterCache.java",
+ "simpleSourceClassName": "JUnit4TestAdapter",
+ "simpleTargetClassName": "JUnit4TestAdapterCache",
+ "priority": 42,
+ "cycleCount": 1,
+ "effortRank": 5,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationValidator",
- "targetClass" : "org.junit.runners.model.FrameworkField",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "AnnotationValidator → FrameworkField : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.internal.Throwables$State",
+ "targetClass": "org.junit.internal.Throwables",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 5,
+ "sourceClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Throwables$State",
+ "simpleTargetClassName": "Throwables",
+ "priority": 43,
+ "cycleCount": 1,
+ "effortRank": 5,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.TestClassValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "TestClassValidator → TestClass* : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.rules.Timeout",
+ "targetClass": "org.junit.rules.Timeout$Builder",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/org/junit/rules/Timeout.java",
+ "targetClassPath": "src/main/java/org/junit/rules/Timeout.java",
+ "simpleSourceClassName": "Timeout",
+ "simpleTargetClassName": "Timeout$Builder",
+ "priority": 44,
+ "cycleCount": 1,
+ "effortRank": 6,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$FieldValidator",
- "targetClass" : "org.junit.runners.model.FrameworkField",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "AnnotationsValidator$FieldValidator → FrameworkField : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "junit.framework.TestCase",
+ "targetClass": "junit.framework.TestResult",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/junit/framework/TestCase.java",
+ "targetClassPath": "src/main/java/junit/framework/TestResult.java",
+ "simpleSourceClassName": "TestCase",
+ "simpleTargetClassName": "TestResult",
+ "priority": 45,
+ "cycleCount": 1,
+ "effortRank": 6,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$ClassValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 4,
- "renderedLabel" : "AnnotationsValidator$ClassValidator → TestClass* : 4",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.runner.Result",
+ "targetClass": "org.junit.runner.Result$SerializedForm",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/org/junit/runner/Result.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "Result",
+ "simpleTargetClassName": "Result$SerializedForm",
+ "priority": 46,
+ "cycleCount": 1,
+ "effortRank": 6,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
},
-{
- "sourceClass" : "org.junit.validator.AnnotationValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "AnnotationValidator → TestClass* : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourceClass": "org.junit.rules.Stopwatch$InternalWatcher",
+ "targetClass": "org.junit.rules.Stopwatch",
+ "sourceUrl": null,
+ "targetUrl": null,
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 12,
+ "sourceClassPath": "src/main/java/org/junit/rules/Stopwatch.java",
+ "targetClassPath": "src/main/java/org/junit/rules/Stopwatch.java",
+ "simpleSourceClassName": "Stopwatch$InternalWatcher",
+ "simpleTargetClassName": "Stopwatch",
+ "priority": 47,
+ "cycleCount": 1,
+ "effortRank": 12,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ "packageMap": {
+ "graphId": "packageGraph",
+ "classCount": 32,
+ "relationshipCount": 125,
+ "dotThreshold": 4000,
+ "dotThresholdExceeded": false,
+ "dot": "strict digraph G {\npackage_9bf1e82bbcacae569c713bba -> package_08fe06d73182d2aba49f0a3b [ label = \"29\" weight = \"29\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_63ec0cff5f640f6c4bea0fbf [ label = \"10\" weight = \"10\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_430407bac0561c25bf36889d [ label = \"39\" weight = \"39\" color = \"red\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_586bd4db20fb6988a9d4eaf8 [ label = \"7\" weight = \"7\" ];\npackage_08fe06d73182d2aba49f0a3b -> package_ca30420dac77c856476365b1 [ label = \"5\" weight = \"5\" ];\npackage_e98a44e5d67bad99f479d7c6 -> package_08fe06d73182d2aba49f0a3b [ label = \"13\" weight = \"13\" ];\npackage_e98a44e5d67bad99f479d7c6 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_4a7bf01725342795a1658980 -> package_08fe06d73182d2aba49f0a3b [ label = \"49\" weight = \"49\" ];\npackage_4a7bf01725342795a1658980 -> package_e98a44e5d67bad99f479d7c6 [ label = \"6\" weight = \"6\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_ca30420dac77c856476365b1 [ label = \"22\" weight = \"22\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_0d5cc855f96914d3926ad59c [ label = \"3\" weight = \"3\" ];\npackage_ecd46349524a87b5d286d241 -> package_77ce60de3666f8dc6de1e090 [ label = \"3\" weight = \"3\" ];\npackage_ecd46349524a87b5d286d241 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"6\" weight = \"6\" ];\npackage_ecd46349524a87b5d286d241 -> package_430407bac0561c25bf36889d [ label = \"16\" weight = \"16\" ];\npackage_ecd46349524a87b5d286d241 -> package_4b999d8089061c322291f538 [ label = \"5\" weight = \"5\" ];\npackage_ecd46349524a87b5d286d241 -> package_3a322087a44efafbd4368a08 [ label = \"5\" weight = \"5\" ];\npackage_ecd46349524a87b5d286d241 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_430407bac0561c25bf36889d [ label = \"68\" weight = \"68\" ];\npackage_ad0c39b57276a6da897dffac -> package_2a0e4fa3bf7e37ca1b867475 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_3a322087a44efafbd4368a08 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_ad0c39b57276a6da897dffac -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_08fe06d73182d2aba49f0a3b [ label = \"1\" weight = \"1\" ];\npackage_ad0c39b57276a6da897dffac -> package_586bd4db20fb6988a9d4eaf8 [ label = \"4\" weight = \"4\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_430407bac0561c25bf36889d [ label = \"11\" weight = \"11\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_77ce60de3666f8dc6de1e090 [ label = \"3\" weight = \"3\" ];\npackage_8ee2c1f7beac932dbb525a9a -> package_3a322087a44efafbd4368a08 [ label = \"3\" weight = \"3\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"8\" weight = \"8\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_430407bac0561c25bf36889d [ label = \"12\" weight = \"12\" ];\npackage_6f19bfeb0acefc8cdf5f6c84 -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" ];\npackage_9d7b823b1681ca5a7ca0d3c3 -> package_77ce60de3666f8dc6de1e090 [ label = \"2\" weight = \"2\" ];\npackage_9d7b823b1681ca5a7ca0d3c3 -> package_3a322087a44efafbd4368a08 [ label = \"1\" weight = \"1\" ];\npackage_8121c686a17bf5f549e393d6 -> package_2c56d155865671623aa3e3cd [ label = \"13\" weight = \"13\" color = \"red\" ];\npackage_2c56d155865671623aa3e3cd -> package_8121c686a17bf5f549e393d6 [ label = \"106\" weight = \"106\" ];\npackage_2c56d155865671623aa3e3cd -> package_3a322087a44efafbd4368a08 [ label = \"44\" weight = \"44\" ];\npackage_2c56d155865671623aa3e3cd -> package_57c57c07a5bca0ee4c17b142 [ label = \"1\" weight = \"1\" ];\npackage_43a57afdb19564533e19988f -> package_8121c686a17bf5f549e393d6 [ label = \"11\" weight = \"11\" ];\npackage_8121c686a17bf5f549e393d6 -> package_77ce60de3666f8dc6de1e090 [ label = \"12\" weight = \"12\" ];\npackage_8121c686a17bf5f549e393d6 -> package_3a322087a44efafbd4368a08 [ label = \"39\" weight = \"39\" ];\npackage_8121c686a17bf5f549e393d6 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_8121c686a17bf5f549e393d6 -> package_57c57c07a5bca0ee4c17b142 [ label = \"3\" weight = \"3\" ];\npackage_57c57c07a5bca0ee4c17b142 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_529853b483d236ddde25a3d4 -> package_3a322087a44efafbd4368a08 [ label = \"14\" weight = \"14\" ];\npackage_529853b483d236ddde25a3d4 -> package_430407bac0561c25bf36889d [ label = \"15\" weight = \"15\" ];\npackage_529853b483d236ddde25a3d4 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"2\" weight = \"2\" ];\npackage_529853b483d236ddde25a3d4 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_529853b483d236ddde25a3d4 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" ];\npackage_ca30420dac77c856476365b1 -> package_57c57c07a5bca0ee4c17b142 [ label = \"8\" weight = \"8\" color = \"red\" ];\npackage_f77a9a3ce2a59ef8ddf2c7a8 -> package_ca30420dac77c856476365b1 [ label = \"3\" weight = \"3\" ];\npackage_ebb7dcde9205bd371607c09b -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" ];\npackage_ca30420dac77c856476365b1 -> package_77ce60de3666f8dc6de1e090 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_3a322087a44efafbd4368a08 [ label = \"2\" weight = \"2\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_430407bac0561c25bf36889d [ label = \"25\" weight = \"25\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_529853b483d236ddde25a3d4 [ label = \"3\" weight = \"3\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"11\" weight = \"11\" ];\npackage_2a0e4fa3bf7e37ca1b867475 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_884afb9c851443f871179dc0 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"34\" weight = \"34\" ];\npackage_884afb9c851443f871179dc0 -> package_430407bac0561c25bf36889d [ label = \"41\" weight = \"41\" color = \"red\" ];\npackage_884afb9c851443f871179dc0 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_884afb9c851443f871179dc0 -> package_3a322087a44efafbd4368a08 [ label = \"5\" weight = \"5\" color = \"red\" ];\npackage_884afb9c851443f871179dc0 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"29\" weight = \"29\" ];\npackage_884afb9c851443f871179dc0 -> package_08fe06d73182d2aba49f0a3b [ label = \"57\" weight = \"57\" ];\npackage_884afb9c851443f871179dc0 -> package_9bf1e82bbcacae569c713bba [ label = \"4\" weight = \"4\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"11\" weight = \"11\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_430407bac0561c25bf36889d [ label = \"2\" weight = \"2\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_3a322087a44efafbd4368a08 [ label = \"6\" weight = \"6\" ];\npackage_25c1ee20ce58bbdc8d3e4e83 -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_2f7cd55814b0fa522b0d505b -> package_3a322087a44efafbd4368a08 [ label = \"28\" weight = \"28\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_3a322087a44efafbd4368a08 [ label = \"36\" weight = \"36\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_ca30420dac77c856476365b1 [ label = \"1\" weight = \"1\" ];\npackage_ccdae54bae7eac0c5941bcdb -> package_f77a9a3ce2a59ef8ddf2c7a8 [ label = \"4\" weight = \"4\" ];\npackage_884afb9c851443f871179dc0 -> package_57c57c07a5bca0ee4c17b142 [ label = \"5\" weight = \"5\" ];\npackage_ca30420dac77c856476365b1 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"7\" weight = \"7\" ];\npackage_ca30420dac77c856476365b1 -> package_430407bac0561c25bf36889d [ label = \"12\" weight = \"12\" color = \"red\" ];\npackage_d6156cb8cc463f7c0a8642e6 -> package_ebb7dcde9205bd371607c09b [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_f77a9a3ce2a59ef8ddf2c7a8 [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_3a322087a44efafbd4368a08 [ label = \"49\" weight = \"49\" ];\npackage_0ce60471b8c652f16eb24524 -> package_430407bac0561c25bf36889d [ label = \"33\" weight = \"33\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ca30420dac77c856476365b1 [ label = \"7\" weight = \"7\" ];\npackage_0ce60471b8c652f16eb24524 -> package_0d5cc855f96914d3926ad59c [ label = \"1\" weight = \"1\" ];\npackage_0ce60471b8c652f16eb24524 -> package_57c57c07a5bca0ee4c17b142 [ label = \"8\" weight = \"8\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ebb7dcde9205bd371607c09b [ label = \"2\" weight = \"2\" ];\npackage_0ce60471b8c652f16eb24524 -> package_d6156cb8cc463f7c0a8642e6 [ label = \"1\" weight = \"1\" ];\npackage_0ce60471b8c652f16eb24524 -> package_ccdae54bae7eac0c5941bcdb [ label = \"4\" weight = \"4\" ];\npackage_430407bac0561c25bf36889d -> package_3a322087a44efafbd4368a08 [ label = \"8\" weight = \"8\" ];\npackage_430407bac0561c25bf36889d -> package_63ec0cff5f640f6c4bea0fbf [ label = \"9\" weight = \"9\" ];\npackage_430407bac0561c25bf36889d -> package_ca30420dac77c856476365b1 [ label = \"6\" weight = \"6\" ];\npackage_430407bac0561c25bf36889d -> package_586bd4db20fb6988a9d4eaf8 [ label = \"26\" weight = \"26\" ];\npackage_430407bac0561c25bf36889d -> package_e98a44e5d67bad99f479d7c6 [ label = \"2\" weight = \"2\" ];\npackage_430407bac0561c25bf36889d -> package_08fe06d73182d2aba49f0a3b [ label = \"1\" weight = \"1\" ];\npackage_430407bac0561c25bf36889d -> package_884afb9c851443f871179dc0 [ label = \"3\" weight = \"3\" ];\npackage_63ec0cff5f640f6c4bea0fbf -> package_430407bac0561c25bf36889d [ label = \"44\" weight = \"44\" color = \"red\" ];\npackage_586bd4db20fb6988a9d4eaf8 -> package_430407bac0561c25bf36889d [ label = \"25\" weight = \"25\" color = \"red\" ];\npackage_586bd4db20fb6988a9d4eaf8 -> package_ca30420dac77c856476365b1 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_430407bac0561c25bf36889d -> package_4b999d8089061c322291f538 [ label = \"3\" weight = \"3\" ];\npackage_430407bac0561c25bf36889d -> package_2a0e4fa3bf7e37ca1b867475 [ label = \"5\" weight = \"5\" color = \"red\" ];\npackage_430407bac0561c25bf36889d -> package_529853b483d236ddde25a3d4 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_884afb9c851443f871179dc0 [ label = \"2\" weight = \"2\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_3a322087a44efafbd4368a08 [ label = \"160\" weight = \"160\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_4b999d8089061c322291f538 [ label = \"8\" weight = \"8\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_430407bac0561c25bf36889d [ label = \"40\" weight = \"40\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"13\" weight = \"13\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_2f7cd55814b0fa522b0d505b [ label = \"4\" weight = \"4\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_25c1ee20ce58bbdc8d3e4e83 [ label = \"13\" weight = \"13\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_ccdae54bae7eac0c5941bcdb [ label = \"10\" weight = \"10\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_57c57c07a5bca0ee4c17b142 [ label = \"10\" weight = \"10\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_0ce60471b8c652f16eb24524 [ label = \"31\" weight = \"31\" ];\npackage_3a322087a44efafbd4368a08 -> package_25c1ee20ce58bbdc8d3e4e83 [ label = \"2\" weight = \"2\" color = \"red\" ];\npackage_3a322087a44efafbd4368a08 -> package_ca30420dac77c856476365b1 [ label = \"4\" weight = \"4\" ];\npackage_3a322087a44efafbd4368a08 -> package_57c57c07a5bca0ee4c17b142 [ label = \"2\" weight = \"2\" ];\npackage_3a322087a44efafbd4368a08 -> package_430407bac0561c25bf36889d [ label = \"15\" weight = \"15\" color = \"red\" ];\npackage_3a322087a44efafbd4368a08 -> package_884afb9c851443f871179dc0 [ label = \"1\" weight = \"1\" ];\npackage_3a322087a44efafbd4368a08 -> package_4b999d8089061c322291f538 [ label = \"2\" weight = \"2\" ];\npackage_3a322087a44efafbd4368a08 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"4\" weight = \"4\" ];\npackage_7ece0e352e8696c73df41d29 -> package_77ce60de3666f8dc6de1e090 [ label = \"16\" weight = \"16\" color = \"red\" ];\npackage_7ece0e352e8696c73df41d29 -> package_3a322087a44efafbd4368a08 [ label = \"42\" weight = \"42\" ];\npackage_7ece0e352e8696c73df41d29 -> package_586bd4db20fb6988a9d4eaf8 [ label = \"1\" weight = \"1\" ];\npackage_7ece0e352e8696c73df41d29 -> package_ccdae54bae7eac0c5941bcdb [ label = \"4\" weight = \"4\" ];\npackage_7ece0e352e8696c73df41d29 -> package_430407bac0561c25bf36889d [ label = \"2\" weight = \"2\" ];\npackage_7ece0e352e8696c73df41d29 -> package_ca30420dac77c856476365b1 [ label = \"3\" weight = \"3\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_7ece0e352e8696c73df41d29 [ label = \"15\" weight = \"15\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_ca30420dac77c856476365b1 [ label = \"6\" weight = \"6\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_63ec0cff5f640f6c4bea0fbf [ label = \"17\" weight = \"17\" ];\npackage_77ce60de3666f8dc6de1e090 -> package_529853b483d236ddde25a3d4 [ label = \"1\" weight = \"1\" color = \"red\" ];\npackage_4b999d8089061c322291f538 -> package_3a322087a44efafbd4368a08 [ label = \"31\" weight = \"31\" color = \"red\" ];\npackage_77ce60de3666f8dc6de1e090 [label=\"org.junit.runners\" color=red style=filled];\npackage_8121c686a17bf5f549e393d6 [label=\"org.junit.experimental.theories\" color=red style=filled];\npackage_8ee2c1f7beac932dbb525a9a [label=\"org.junit.experimental\"];\npackage_2f7cd55814b0fa522b0d505b [label=\"org.junit.internal.runners.rules\"];\npackage_2a0e4fa3bf7e37ca1b867475 [label=\"org.junit.internal.requests\"];\npackage_6f19bfeb0acefc8cdf5f6c84 [label=\"org.junit.experimental.results\"];\npackage_25c1ee20ce58bbdc8d3e4e83 [label=\"org.junit.internal.runners.model\"];\npackage_529853b483d236ddde25a3d4 [label=\"org.junit.internal.builders\"];\npackage_4a7bf01725342795a1658980 [label=\"junit.textui\"];\npackage_ecd46349524a87b5d286d241 [label=\"org.junit.experimental.categories\"];\npackage_0d5cc855f96914d3926ad59c [label=\"org.junit.function\"];\npackage_2c56d155865671623aa3e3cd [label=\"org.junit.experimental.theories.internal\"];\npackage_7ece0e352e8696c73df41d29 [label=\"org.junit.runners.parameterized\"];\npackage_9bf1e82bbcacae569c713bba [label=\"junit.extensions\"];\npackage_ccdae54bae7eac0c5941bcdb [label=\"org.junit.internal.runners.statements\"];\npackage_ad0c39b57276a6da897dffac [label=\"org.junit.experimental.max\"];\npackage_586bd4db20fb6988a9d4eaf8 [label=\"org.junit.runner.notification\" color=red style=filled];\npackage_43a57afdb19564533e19988f [label=\"org.junit.experimental.theories.suppliers\"];\npackage_d6156cb8cc463f7c0a8642e6 [label=\"org.junit.matchers\"];\npackage_63ec0cff5f640f6c4bea0fbf [label=\"org.junit.runner.manipulation\"];\npackage_f77a9a3ce2a59ef8ddf2c7a8 [label=\"org.junit.internal.management\"];\npackage_ebb7dcde9205bd371607c09b [label=\"org.junit.internal.matchers\"];\npackage_9d7b823b1681ca5a7ca0d3c3 [label=\"org.junit.experimental.runners\"];\npackage_0ce60471b8c652f16eb24524 [label=\"org.junit.rules\"];\npackage_3a322087a44efafbd4368a08 [label=\"org.junit.runners.model\"];\npackage_ca30420dac77c856476365b1 [label=\"org.junit.internal\" color=red style=filled];\npackage_e98a44e5d67bad99f479d7c6 [label=\"junit.runner\"];\npackage_430407bac0561c25bf36889d [label=\"org.junit.runner\"];\npackage_57c57c07a5bca0ee4c17b142 [label=\"org.junit\"];\npackage_4b999d8089061c322291f538 [label=\"org.junit.validator\"];\npackage_08fe06d73182d2aba49f0a3b [label=\"junit.framework\"];\npackage_884afb9c851443f871179dc0 [label=\"org.junit.internal.runners\" color=red style=filled];\n}",
+ "hasEdges": true
+ },
+ "packageRelationshipsToRemove": {
+ "cycleCount": 5,
+ "relationshipsToRemoveCount": 18,
+ "hasRelationships": true,
+ "relationships": [
+ {
+ "sourcePackage": "org.junit.internal",
+ "targetPackage": "org.junit.runners",
+ "sourceMarked": true,
+ "targetMarked": true,
+ "weight": 1,
+ "sourcePackagePath": "src/main/java/org/junit/internal/",
+ "targetPackagePath": "src/main/java/org/junit/runners/",
+ "priority": 1,
+ "cycleCount": 4,
+ "effortRank": 1,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.internal.MethodSorter",
+ "targetClass": "org.junit.runners.MethodSorters",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/MethodSorter.java",
+ "targetClassPath": "src/main/java/org/junit/runners/MethodSorters.java",
+ "simpleSourceClassName": "MethodSorter",
+ "simpleTargetClassName": "MethodSorters",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.validator.PublicClassValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 3,
- "renderedLabel" : "PublicClassValidator → TestClass* : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.runners",
+ "targetPackage": "org.junit.internal.builders",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourcePackagePath": "src/main/java/org/junit/runners/",
+ "targetPackagePath": "src/main/java/org/junit/internal/builders/",
+ "priority": 2,
+ "cycleCount": 4,
+ "effortRank": 1,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runners.Suite",
+ "targetClass": "org.junit.internal.builders.AllDefaultPossibilitiesBuilder",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runners/Suite.java",
+ "targetClassPath": "src/main/java/org/junit/internal/builders/AllDefaultPossibilitiesBuilder.java",
+ "simpleSourceClassName": "Suite",
+ "simpleTargetClassName": "AllDefaultPossibilitiesBuilder",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.validator.AnnotationsValidator$AnnotatableValidator",
- "targetClass" : "org.junit.runners.model.TestClass",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 2,
- "renderedLabel" : "AnnotationsValidator$AnnotatableValidator → TestClass* : 2",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.experimental.theories",
- "targetPackage" : "org.junit.experimental.theories.internal",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 13,
- "renderedLabel" : "org.junit.experimental.theories* → org.junit.experimental.theories.internal : 13",
- "priority" : 17,
- "cycleCount" : 1,
- "effortRank" : 13,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.experimental.theories.FromDataPoints",
- "targetClass" : "org.junit.experimental.theories.internal.SpecificDataPointsSupplier",
- "sourceMarked" : false,
- "targetMarked" : true,
- "weight" : 1,
- "renderedLabel" : "FromDataPoints → SpecificDataPointsSupplier* : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.runner",
+ "targetPackage": "org.junit.internal.builders",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourcePackagePath": "src/main/java/org/junit/runner/",
+ "targetPackagePath": "src/main/java/org/junit/internal/builders/",
+ "priority": 3,
+ "cycleCount": 4,
+ "effortRank": 2,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.builders.AllDefaultPossibilitiesBuilder",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/builders/AllDefaultPossibilitiesBuilder.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "AllDefaultPossibilitiesBuilder",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.experimental.theories.Theories$TheoryAnchor",
- "targetClass" : "org.junit.experimental.theories.internal.Assignments",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 11,
- "renderedLabel" : "Theories$TheoryAnchor → Assignments : 11",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.runner",
+ "targetPackage": "org.junit.internal.requests",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 5,
+ "sourcePackagePath": "src/main/java/org/junit/runner/",
+ "targetPackagePath": "src/main/java/org/junit/internal/requests/",
+ "priority": 4,
+ "cycleCount": 4,
+ "effortRank": 5,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.SortingRequest",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/SortingRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "SortingRequest",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.ClassRequest",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/ClassRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "ClassRequest",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.FilterRequest",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/FilterRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "FilterRequest",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.Request",
+ "targetClass": "org.junit.internal.requests.OrderingRequest",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/Request.java",
+ "targetClassPath": "src/main/java/org/junit/internal/requests/OrderingRequest.java",
+ "simpleSourceClassName": "Request",
+ "simpleTargetClassName": "OrderingRequest",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.experimental.theories.Theories$TheoryAnchor",
- "targetClass" : "org.junit.experimental.theories.internal.ParameterizedAssertionError",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Theories$TheoryAnchor → ParameterizedAssertionError : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- }, {
- "sourcePackage" : "org.junit.runner.manipulation",
- "targetPackage" : "org.junit.runner",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 44,
- "renderedLabel" : "org.junit.runner.manipulation → org.junit.runner : 44",
- "priority" : 18,
- "cycleCount" : 1,
- "effortRank" : 44,
- "classRelationshipsToBreakPackage" : [ {
- "sourceClass" : "org.junit.runner.manipulation.Ordering$1",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 1,
- "renderedLabel" : "Ordering$1 → Description : 1",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.internal",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 12,
+ "sourcePackagePath": "src/main/java/org/junit/internal/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 5,
+ "cycleCount": 4,
+ "effortRank": 12,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.internal.TextListener",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/TextListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "TextListener",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.TextListener",
+ "targetClass": "org.junit.runner.Result",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 10,
+ "sourceClassPath": "src/main/java/org/junit/internal/TextListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "TextListener",
+ "simpleTargetClassName": "Result",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Ordering",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 7,
- "renderedLabel" : "Ordering → Description : 7",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit",
+ "targetPackage": "org.junit.runners",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourcePackagePath": "src/main/java/org/junit/",
+ "targetPackagePath": "src/main/java/org/junit/runners/",
+ "priority": 6,
+ "cycleCount": 3,
+ "effortRank": 1,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.FixMethodOrder",
+ "targetClass": "org.junit.runners.MethodSorters",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/FixMethodOrder.java",
+ "targetClassPath": "src/main/java/org/junit/runners/MethodSorters.java",
+ "simpleSourceClassName": "FixMethodOrder",
+ "simpleTargetClassName": "MethodSorters",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Sorter",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 11,
- "renderedLabel" : "Sorter* → Description : 11",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.runner.notification",
+ "targetPackage": "org.junit.internal",
+ "sourceMarked": true,
+ "targetMarked": true,
+ "weight": 2,
+ "sourcePackagePath": "src/main/java/org/junit/runner/notification/",
+ "targetPackagePath": "src/main/java/org/junit/internal/",
+ "priority": 7,
+ "cycleCount": 3,
+ "effortRank": 2,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runner.notification.Failure",
+ "targetClass": "org.junit.internal.Throwables",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/Failure.java",
+ "targetClassPath": "src/main/java/org/junit/internal/Throwables.java",
+ "simpleSourceClassName": "Failure",
+ "simpleTargetClassName": "Throwables",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Filter",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 10,
- "renderedLabel" : "Filter* → Description : 10",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.runners.model",
+ "targetPackage": "org.junit.internal.runners.model",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourcePackagePath": "src/main/java/org/junit/runners/model/",
+ "targetPackagePath": "src/main/java/org/junit/internal/runners/model/",
+ "priority": 8,
+ "cycleCount": 3,
+ "effortRank": 2,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runners.model.FrameworkMethod",
+ "targetClass": "org.junit.internal.runners.model.ReflectiveCallable",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/FrameworkMethod.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/model/ReflectiveCallable.java",
+ "simpleSourceClassName": "FrameworkMethod",
+ "simpleTargetClassName": "ReflectiveCallable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runners.model.MultipleFailureException",
+ "targetClass": "org.junit.internal.runners.model.MultipleFailureException",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/MultipleFailureException.java",
+ "targetClassPath": "src/main/java/org/junit/internal/runners/model/MultipleFailureException.java",
+ "simpleSourceClassName": "MultipleFailureException",
+ "simpleTargetClassName": "MultipleFailureException",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Orderer",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : true,
- "targetMarked" : false,
- "weight" : 7,
- "renderedLabel" : "Orderer* → Description : 7",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.internal.runners",
+ "targetPackage": "org.junit.runners.model",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 5,
+ "sourcePackagePath": "src/main/java/org/junit/internal/runners/",
+ "targetPackagePath": "src/main/java/org/junit/runners/model/",
+ "priority": 9,
+ "cycleCount": 3,
+ "effortRank": 5,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.internal.runners.ErrorReportingRunner",
+ "targetClass": "org.junit.runners.model.InvalidTestClassError",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/InvalidTestClassError.java",
+ "simpleSourceClassName": "ErrorReportingRunner",
+ "simpleTargetClassName": "InvalidTestClassError",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.ErrorReportingRunner",
+ "targetClass": "org.junit.runners.model.InitializationError",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/InitializationError.java",
+ "simpleSourceClassName": "ErrorReportingRunner",
+ "simpleTargetClassName": "InitializationError",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.MethodRoadie",
+ "targetClass": "org.junit.runners.model.TestTimedOutException",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/MethodRoadie.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestTimedOutException.java",
+ "simpleSourceClassName": "MethodRoadie",
+ "simpleTargetClassName": "TestTimedOutException",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Alphanumeric",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 5,
- "renderedLabel" : "Alphanumeric → Description : 5",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
+ {
+ "sourcePackage": "org.junit.internal",
+ "targetPackage": "org.junit",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 8,
+ "sourcePackagePath": "src/main/java/org/junit/internal/",
+ "targetPackagePath": "src/main/java/org/junit/",
+ "priority": 10,
+ "cycleCount": 3,
+ "effortRank": 8,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.internal.InexactComparisonCriteria",
+ "targetClass": "org.junit.Assert",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/InexactComparisonCriteria.java",
+ "targetClassPath": "src/main/java/org/junit/Assert.java",
+ "simpleSourceClassName": "InexactComparisonCriteria",
+ "simpleTargetClassName": "Assert",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.ExactComparisonCriteria",
+ "targetClass": "org.junit.Assert",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/ExactComparisonCriteria.java",
+ "targetClassPath": "src/main/java/org/junit/Assert.java",
+ "simpleSourceClassName": "ExactComparisonCriteria",
+ "simpleTargetClassName": "Assert",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.ComparisonCriteria",
+ "targetClass": "org.junit.Assert",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/internal/ComparisonCriteria.java",
+ "targetClassPath": "src/main/java/org/junit/Assert.java",
+ "simpleSourceClassName": "ComparisonCriteria",
+ "simpleTargetClassName": "Assert",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.MethodSorter",
+ "targetClass": "org.junit.FixMethodOrder",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/MethodSorter.java",
+ "targetClassPath": "src/main/java/org/junit/FixMethodOrder.java",
+ "simpleSourceClassName": "MethodSorter",
+ "simpleTargetClassName": "FixMethodOrder",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
},
-{
- "sourceClass" : "org.junit.runner.manipulation.Ordering$Context",
- "targetClass" : "org.junit.runner.Description",
- "sourceMarked" : false,
- "targetMarked" : false,
- "weight" : 3,
- "renderedLabel" : "Ordering$Context → Description : 3",
- "priority" : 0,
- "cycleCount" : 0,
- "effortRank" : 0,
- "alsoRemovesPackageRelationship" : false,
- "packageCycleCount" : 0
- } ]
- } ]
+ {
+ "sourcePackage": "org.junit.runners.model",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 15,
+ "sourcePackagePath": "src/main/java/org/junit/runners/model/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 11,
+ "cycleCount": 3,
+ "effortRank": 15,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runners.model.RunnerBuilder",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/RunnerBuilder.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "RunnerBuilder",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runners.model.RunnerBuilder",
+ "targetClass": "org.junit.runner.Runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 11,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/RunnerBuilder.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Runner.java",
+ "simpleSourceClassName": "RunnerBuilder",
+ "simpleTargetClassName": "Runner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runners.model.RunnerBuilder",
+ "targetClass": "org.junit.runner.OrderWith",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/runners/model/RunnerBuilder.java",
+ "targetClassPath": "src/main/java/org/junit/runner/OrderWith.java",
+ "simpleSourceClassName": "RunnerBuilder",
+ "simpleTargetClassName": "OrderWith",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.runners.parameterized",
+ "targetPackage": "org.junit.runners",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 16,
+ "sourcePackagePath": "src/main/java/org/junit/runners/parameterized/",
+ "targetPackagePath": "src/main/java/org/junit/runners/",
+ "priority": 12,
+ "cycleCount": 3,
+ "effortRank": 16,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
+ "targetClass": "org.junit.runners.Parameterized$Parameter",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java",
+ "targetClassPath": "src/main/java/org/junit/runners/Parameterized.java",
+ "simpleSourceClassName": "BlockJUnit4ClassRunnerWithParameters",
+ "simpleTargetClassName": "Parameterized$Parameter",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
+ "targetClass": "org.junit.runners.BlockJUnit4ClassRunner",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 5,
+ "sourceClassPath": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java",
+ "targetClassPath": "src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java",
+ "simpleSourceClassName": "BlockJUnit4ClassRunnerWithParameters",
+ "simpleTargetClassName": "BlockJUnit4ClassRunner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters",
+ "targetClass": "org.junit.runners.ParentRunner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 8,
+ "sourceClassPath": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java",
+ "targetClassPath": "src/main/java/org/junit/runners/ParentRunner.java",
+ "simpleSourceClassName": "BlockJUnit4ClassRunnerWithParameters",
+ "simpleTargetClassName": "ParentRunner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.runner.notification",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 25,
+ "sourcePackagePath": "src/main/java/org/junit/runner/notification/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 13,
+ "cycleCount": 3,
+ "effortRank": 25,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runner.notification.RunListener",
+ "targetClass": "org.junit.runner.Result",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "RunListener",
+ "simpleTargetClassName": "Result",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.RunListener",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "RunListener",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.SynchronizedRunListener",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/SynchronizedRunListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "SynchronizedRunListener",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.RunNotifier",
+ "targetClass": "org.junit.runner.Result",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunNotifier.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "RunNotifier",
+ "simpleTargetClassName": "Result",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.Failure",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/Failure.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Failure",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.RunNotifier",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 6,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/RunNotifier.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "RunNotifier",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.notification.SynchronizedRunListener",
+ "targetClass": "org.junit.runner.Result",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/notification/SynchronizedRunListener.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Result.java",
+ "simpleSourceClassName": "SynchronizedRunListener",
+ "simpleTargetClassName": "Result",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "junit.framework",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 39,
+ "sourcePackagePath": "src/main/java/junit/framework/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 14,
+ "cycleCount": 3,
+ "effortRank": 39,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapter",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 13,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit4TestAdapter",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapterCache",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 14,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapterCache.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit4TestAdapterCache",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestCaseFacade",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestCaseFacade.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit4TestCaseFacade",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestCaseFacade",
+ "targetClass": "org.junit.runner.Describable",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestCaseFacade.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Describable.java",
+ "simpleSourceClassName": "JUnit4TestCaseFacade",
+ "simpleTargetClassName": "Describable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapter",
+ "targetClass": "org.junit.runner.Request",
+ "sourceMarked": true,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Request.java",
+ "simpleSourceClassName": "JUnit4TestAdapter",
+ "simpleTargetClassName": "Request",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapter",
+ "targetClass": "org.junit.runner.Runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Runner.java",
+ "simpleSourceClassName": "JUnit4TestAdapter",
+ "simpleTargetClassName": "Runner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "junit.framework.JUnit4TestAdapter",
+ "targetClass": "org.junit.runner.Describable",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/junit/framework/JUnit4TestAdapter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Describable.java",
+ "simpleSourceClassName": "JUnit4TestAdapter",
+ "simpleTargetClassName": "Describable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.internal.runners",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 41,
+ "sourcePackagePath": "src/main/java/org/junit/internal/runners/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 15,
+ "cycleCount": 3,
+ "effortRank": 41,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener",
+ "targetClass": "org.junit.runner.Describable",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Describable.java",
+ "simpleSourceClassName": "JUnit38ClassRunner$OldTestClassAdaptingListener",
+ "simpleTargetClassName": "Describable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.ErrorReportingRunner",
+ "targetClass": "org.junit.runner.Runner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Runner.java",
+ "simpleSourceClassName": "ErrorReportingRunner",
+ "simpleTargetClassName": "Runner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.ErrorReportingRunner",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 7,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "ErrorReportingRunner",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit38ClassRunner",
+ "targetClass": "org.junit.runner.Describable",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Describable.java",
+ "simpleSourceClassName": "JUnit38ClassRunner",
+ "simpleTargetClassName": "Describable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit38ClassRunner",
+ "targetClass": "org.junit.runner.Runner",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Runner.java",
+ "simpleSourceClassName": "JUnit38ClassRunner",
+ "simpleTargetClassName": "Runner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit4ClassRunner",
+ "targetClass": "org.junit.runner.Runner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Runner.java",
+ "simpleSourceClassName": "JUnit4ClassRunner",
+ "simpleTargetClassName": "Runner",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit38ClassRunner",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 8,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit38ClassRunner",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit38ClassRunner$OldTestClassAdaptingListener",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit38ClassRunner$OldTestClassAdaptingListener",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.ClassRoadie",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/ClassRoadie.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "ClassRoadie",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.JUnit4ClassRunner",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 8,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "JUnit4ClassRunner",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.internal.runners.MethodRoadie",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/internal/runners/MethodRoadie.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "MethodRoadie",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.validator",
+ "targetPackage": "org.junit.runners.model",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 31,
+ "sourcePackagePath": "src/main/java/org/junit/validator/",
+ "targetPackagePath": "src/main/java/org/junit/runners/model/",
+ "priority": 16,
+ "cycleCount": 2,
+ "effortRank": 31,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$FieldValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationsValidator$FieldValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationValidator",
+ "targetClass": "org.junit.runners.model.FrameworkMethod",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/FrameworkMethod.java",
+ "simpleSourceClassName": "AnnotationValidator",
+ "simpleTargetClassName": "FrameworkMethod",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$MethodValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationsValidator$MethodValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationsValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$MethodValidator",
+ "targetClass": "org.junit.runners.model.FrameworkMethod",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/FrameworkMethod.java",
+ "simpleSourceClassName": "AnnotationsValidator$MethodValidator",
+ "simpleTargetClassName": "FrameworkMethod",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$AnnotatableValidator",
+ "targetClass": "org.junit.runners.model.Annotatable",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 7,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/Annotatable.java",
+ "simpleSourceClassName": "AnnotationsValidator$AnnotatableValidator",
+ "simpleTargetClassName": "Annotatable",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationValidator",
+ "targetClass": "org.junit.runners.model.FrameworkField",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/FrameworkField.java",
+ "simpleSourceClassName": "AnnotationValidator",
+ "simpleTargetClassName": "FrameworkField",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.TestClassValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/validator/TestClassValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "TestClassValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$FieldValidator",
+ "targetClass": "org.junit.runners.model.FrameworkField",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/FrameworkField.java",
+ "simpleSourceClassName": "AnnotationsValidator$FieldValidator",
+ "simpleTargetClassName": "FrameworkField",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$ClassValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 4,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationsValidator$ClassValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.PublicClassValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/validator/PublicClassValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "PublicClassValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.validator.AnnotationsValidator$AnnotatableValidator",
+ "targetClass": "org.junit.runners.model.TestClass",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 2,
+ "sourceClassPath": "src/main/java/org/junit/validator/AnnotationsValidator.java",
+ "targetClassPath": "src/main/java/org/junit/runners/model/TestClass.java",
+ "simpleSourceClassName": "AnnotationsValidator$AnnotatableValidator",
+ "simpleTargetClassName": "TestClass",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.experimental.theories",
+ "targetPackage": "org.junit.experimental.theories.internal",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 13,
+ "sourcePackagePath": "src/main/java/org/junit/experimental/theories/",
+ "targetPackagePath": "src/main/java/org/junit/experimental/theories/internal/",
+ "priority": 17,
+ "cycleCount": 1,
+ "effortRank": 13,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.experimental.theories.FromDataPoints",
+ "targetClass": "org.junit.experimental.theories.internal.SpecificDataPointsSupplier",
+ "sourceMarked": false,
+ "targetMarked": true,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/FromDataPoints.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java",
+ "simpleSourceClassName": "FromDataPoints",
+ "simpleTargetClassName": "SpecificDataPointsSupplier",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.experimental.theories.Theories$TheoryAnchor",
+ "targetClass": "org.junit.experimental.theories.internal.Assignments",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 11,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/Theories.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/internal/Assignments.java",
+ "simpleSourceClassName": "Theories$TheoryAnchor",
+ "simpleTargetClassName": "Assignments",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.experimental.theories.Theories$TheoryAnchor",
+ "targetClass": "org.junit.experimental.theories.internal.ParameterizedAssertionError",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/experimental/theories/Theories.java",
+ "targetClassPath": "src/main/java/org/junit/experimental/theories/internal/ParameterizedAssertionError.java",
+ "simpleSourceClassName": "Theories$TheoryAnchor",
+ "simpleTargetClassName": "ParameterizedAssertionError",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ },
+ {
+ "sourcePackage": "org.junit.runner.manipulation",
+ "targetPackage": "org.junit.runner",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 44,
+ "sourcePackagePath": "src/main/java/org/junit/runner/manipulation/",
+ "targetPackagePath": "src/main/java/org/junit/runner/",
+ "priority": 18,
+ "cycleCount": 1,
+ "effortRank": 44,
+ "classRelationshipsToBreakPackage": [
+ {
+ "sourceClass": "org.junit.runner.manipulation.Ordering$1",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 1,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Ordering$1",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Ordering",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 7,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Ordering",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Sorter",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 11,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Sorter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Sorter",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Filter",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 10,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Filter.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Filter",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Orderer",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": true,
+ "targetMarked": false,
+ "weight": 7,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Orderer.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Orderer",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Alphanumeric",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 5,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Alphanumeric.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Alphanumeric",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ },
+ {
+ "sourceClass": "org.junit.runner.manipulation.Ordering$Context",
+ "targetClass": "org.junit.runner.Description",
+ "sourceMarked": false,
+ "targetMarked": false,
+ "weight": 3,
+ "sourceClassPath": "src/main/java/org/junit/runner/manipulation/Ordering.java",
+ "targetClassPath": "src/main/java/org/junit/runner/Description.java",
+ "simpleSourceClassName": "Ordering$Context",
+ "simpleTargetClassName": "Description",
+ "priority": 0,
+ "cycleCount": 0,
+ "effortRank": 0,
+ "alsoRemovesPackageRelationship": false,
+ "packageCycleCount": 0
+ }
+ ]
+ }
+ ]
},
- "hasDisharmonies" : true,
- "disharmonies" : [ {
- "type" : "God Class",
- "anchorId" : "GOD",
- "title" : "God Classes",
- "methodLevel" : false,
- "problem" : "God Classes take on too much responsibility,",
- "solution" : "Extract related islands of functionality into separate classes. Leave God classes that don't change often alone.",
- "maxPriority" : 2,
- "chart" : {
- "canvasId" : "chart_GOD",
- "bubbles" : [ {
- "id" : "BlockJUnit4ClassRunner.java",
- "label" : "BlockJUnit4ClassRunner.java",
- "x" : 1,
- "y" : 2,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 1,
- "changePronenessRank" : 2,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "ParentRunner.java",
- "label" : "ParentRunner.java",
- "x" : 2,
- "y" : 1,
- "r" : 6,
- "priority" : 2,
- "effortRank" : 2,
- "changePronenessRank" : 1,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
- },
- "table" : {
- "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "BlockJUnit4ClassRunner.java",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "3/14/19, 9:06 AM",
- "align" : "right"
- }, {
- "content" : "104",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "ParentRunner.java",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "11/27/19, 1:46 PM",
- "align" : "right"
- }, {
- "content" : "97",
- "align" : "right"
- } ]
- } ]
- }
- }, {
- "type" : "Data Class",
- "anchorId" : "DATA_CLASS",
- "title" : "Data Classes",
- "methodLevel" : false,
- "problem" : "Data Classes are dumb data holders that other classes rely on.",
- "solution" : "Move the data/variable(s) to the same class as the operation.",
- "maxPriority" : 2,
- "chart" : {
- "canvasId" : "chart_DATA_CLASS",
- "bubbles" : [ {
- "id" : "Failure.java",
- "label" : "Failure.java",
- "x" : 1,
- "y" : 1,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 1,
- "changePronenessRank" : 1,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "FrameworkField.java",
- "label" : "FrameworkField.java",
- "x" : 2,
- "y" : 2,
- "r" : 6,
- "priority" : 2,
- "effortRank" : 2,
- "changePronenessRank" : 2,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
+ "hasDisharmonies": true,
+ "disharmonies": [
+ {
+ "type": "God Class",
+ "anchorId": "GOD",
+ "title": "God Classes",
+ "methodLevel": false,
+ "problem": "God Classes take on too much responsibility,",
+ "solution": "Extract related islands of functionality into separate classes. Leave God classes that don't change often alone.",
+ "maxPriority": 2,
+ "chart": {
+ "canvasId": "chart_GOD",
+ "bubbles": [
+ {
+ "id": "BlockJUnit4ClassRunner.java",
+ "label": "BlockJUnit4ClassRunner.java",
+ "x": 1,
+ "y": 2,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 1,
+ "changePronenessRank": 2,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java"
+ },
+ {
+ "id": "ParentRunner.java",
+ "label": "ParentRunner.java",
+ "x": 2,
+ "y": 1,
+ "r": 6,
+ "priority": 2,
+ "effortRank": 2,
+ "changePronenessRank": 1,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "BlockJUnit4ClassRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "3/14/19, 9:06 AM",
+ "align": "right"
+ },
+ {
+ "content": "104",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "ParentRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "11/27/19, 1:46 PM",
+ "align": "right"
+ },
+ {
+ "content": "97",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
},
- "table" : {
- "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "Failure.java",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "2/5/17, 6:35 PM",
- "align" : "right"
- }, {
- "content" : "13",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "FrameworkField.java",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "1/4/21, 4:01 PM",
- "align" : "right"
- }, {
- "content" : "27",
- "align" : "right"
- } ]
- } ]
- }
- }, {
- "type" : "Refused Parent Bequest",
- "anchorId" : "RPB",
- "title" : "Refused Parent Bequest",
- "methodLevel" : false,
- "problem" : "Child class is large and often complex, but doesn't override or use many of the parent class's methods",
- "solution" : "Do one or more of the following:
- Extract the child class into a separate class. Move the methods that are used from the parent class into the child class.
- Make unused protected members private in the parent class.
- If a parent class has multiple children, move methods not used by all descendants to another class.",
- "maxPriority" : 14,
- "chart" : {
- "canvasId" : "chart_RPB",
- "bubbles" : [ {
- "id" : "Theories.java",
- "label" : "Theories.java",
- "x" : 5,
- "y" : 12,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 5,
- "changePronenessRank" : 12,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "BlockJUnit4ClassRunner.java",
- "label" : "BlockJUnit4ClassRunner.java",
- "x" : 8,
- "y" : 14,
- "r" : 23,
- "priority" : 2,
- "effortRank" : 8,
- "changePronenessRank" : 14,
- "color" : "rgba(220, 72, 55, 0.75)",
- "borderColor" : "rgb(220, 72, 55)"
- }, {
- "id" : "ErrorReportingRunner.java",
- "label" : "ErrorReportingRunner.java",
- "x" : 1,
- "y" : 6,
- "r" : 21,
- "priority" : 3,
- "effortRank" : 1,
- "changePronenessRank" : 6,
- "color" : "rgba(205, 81, 59, 0.75)",
- "borderColor" : "rgb(205, 81, 59)"
- }, {
- "id" : "Categories.java",
- "label" : "Categories.java",
- "x" : 6,
- "y" : 11,
- "r" : 20,
- "priority" : 4,
- "effortRank" : 6,
- "changePronenessRank" : 11,
- "color" : "rgba(190, 89, 62, 0.75)",
- "borderColor" : "rgb(190, 89, 62)"
- }, {
- "id" : "Categories.java",
- "label" : "Categories.java",
- "x" : 9,
- "y" : 11,
- "r" : 18,
- "priority" : 5,
- "effortRank" : 9,
- "changePronenessRank" : 11,
- "color" : "rgba(175, 98, 66, 0.75)",
- "borderColor" : "rgb(175, 98, 66)"
- }, {
- "id" : "TestRunner.java",
- "label" : "TestRunner.java",
- "x" : 2,
- "y" : 2,
- "r" : 17,
- "priority" : 6,
- "effortRank" : 2,
- "changePronenessRank" : 2,
- "color" : "rgba(160, 106, 69, 0.75)",
- "borderColor" : "rgb(160, 106, 69)"
- }, {
- "id" : "JUnit4ClassRunner.java",
- "label" : "JUnit4ClassRunner.java",
- "x" : 3,
- "y" : 3,
- "r" : 16,
- "priority" : 7,
- "effortRank" : 3,
- "changePronenessRank" : 3,
- "color" : "rgba(145, 115, 72, 0.75)",
- "borderColor" : "rgb(145, 115, 72)"
- }, {
- "id" : "JUnit38ClassRunner.java",
- "label" : "JUnit38ClassRunner.java",
- "x" : 4,
- "y" : 4,
- "r" : 14,
- "priority" : 8,
- "effortRank" : 4,
- "changePronenessRank" : 4,
- "color" : "rgba(129, 123, 76, 0.75)",
- "borderColor" : "rgb(129, 123, 76)"
- }, {
- "id" : "ParentRunner.java",
- "label" : "ParentRunner.java",
- "x" : 13,
- "y" : 13,
- "r" : 13,
- "priority" : 9,
- "effortRank" : 13,
- "changePronenessRank" : 13,
- "color" : "rgba(114, 132, 79, 0.75)",
- "borderColor" : "rgb(114, 132, 79)"
- }, {
- "id" : "FailOnTimeout.java",
- "label" : "FailOnTimeout.java",
- "x" : 10,
- "y" : 9,
- "r" : 12,
- "priority" : 10,
- "effortRank" : 10,
- "changePronenessRank" : 9,
- "color" : "rgba(99, 140, 82, 0.75)",
- "borderColor" : "rgb(99, 140, 82)"
- }, {
- "id" : "BlockJUnit4ClassRunnerWithParameters.java",
- "label" : "BlockJUnit4ClassRunnerWithParameters.java",
- "x" : 7,
- "y" : 5,
- "r" : 10,
- "priority" : 11,
- "effortRank" : 7,
- "changePronenessRank" : 5,
- "color" : "rgba(84, 149, 86, 0.75)",
- "borderColor" : "rgb(84, 149, 86)"
- }, {
- "id" : "TemporaryFolder.java",
- "label" : "TemporaryFolder.java",
- "x" : 11,
- "y" : 8,
- "r" : 9,
- "priority" : 12,
- "effortRank" : 11,
- "changePronenessRank" : 8,
- "color" : "rgba(69, 157, 89, 0.75)",
- "borderColor" : "rgb(69, 157, 89)"
- }, {
- "id" : "AllMembersSupplier.java",
- "label" : "AllMembersSupplier.java",
- "x" : 12,
- "y" : 7,
- "r" : 7,
- "priority" : 13,
- "effortRank" : 12,
- "changePronenessRank" : 7,
- "color" : "rgba(54, 166, 93, 0.75)",
- "borderColor" : "rgb(54, 166, 93)"
- }, {
- "id" : "TestCase.java",
- "label" : "TestCase.java",
- "x" : 10,
- "y" : 1,
- "r" : 6,
- "priority" : 14,
- "effortRank" : 10,
- "changePronenessRank" : 1,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
+ {
+ "type": "Data Class",
+ "anchorId": "DATA_CLASS",
+ "title": "Data Classes",
+ "methodLevel": false,
+ "problem": "Data Classes are dumb data holders that other classes rely on.",
+ "solution": "Move the data/variable(s) to the same class as the operation.",
+ "maxPriority": 2,
+ "chart": {
+ "canvasId": "chart_DATA_CLASS",
+ "bubbles": [
+ {
+ "id": "Failure.java",
+ "label": "Failure.java",
+ "x": 1,
+ "y": 1,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 1,
+ "changePronenessRank": 1,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/runner/notification/Failure.java"
+ },
+ {
+ "id": "FrameworkField.java",
+ "label": "FrameworkField.java",
+ "x": 2,
+ "y": 2,
+ "r": 6,
+ "priority": 2,
+ "effortRank": 2,
+ "changePronenessRank": 2,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/org/junit/runners/model/FrameworkField.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "Failure.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runner/notification/Failure.java"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "2/5/17, 6:35 PM",
+ "align": "right"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "FrameworkField.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/model/FrameworkField.java"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "1/4/21, 4:01 PM",
+ "align": "right"
+ },
+ {
+ "content": "27",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
},
- "table" : {
- "headers" : [ "Class", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "Theories.java",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "5/25/17, 11:19 AM",
- "align" : "right"
- }, {
- "content" : "46",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "BlockJUnit4ClassRunner.java",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "14",
- "align" : "right"
- }, {
- "content" : "8",
- "align" : "right"
- }, {
- "content" : "3/14/19, 9:06 AM",
- "align" : "right"
- }, {
- "content" : "104",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "ErrorReportingRunner.java",
- "align" : "left"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "10/10/22, 3:22 PM",
- "align" : "right"
- }, {
- "content" : "28",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Categories.java",
- "align" : "left"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "11",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "1/9/17, 9:18 PM",
- "align" : "right"
- }, {
- "content" : "39",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Categories.java",
- "align" : "left"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "11",
- "align" : "right"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "1/9/17, 9:18 PM",
- "align" : "right"
- }, {
- "content" : "39",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "TestRunner.java",
- "align" : "left"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "3/29/15, 4:17 PM",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "JUnit4ClassRunner.java",
- "align" : "left"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "9/12/14, 3:18 PM",
- "align" : "right"
- }, {
- "content" : "16",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "JUnit38ClassRunner.java",
- "align" : "left"
- }, {
- "content" : "8",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "7/30/18, 12:07 PM",
- "align" : "right"
- }, {
- "content" : "23",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "ParentRunner.java",
- "align" : "left"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "13",
- "align" : "right"
- }, {
- "content" : "13",
- "align" : "right"
- }, {
- "content" : "11/27/19, 1:46 PM",
- "align" : "right"
- }, {
- "content" : "97",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "FailOnTimeout.java",
- "align" : "left"
- }, {
- "content" : "10",
- "align" : "right"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "10",
- "align" : "right"
- }, {
- "content" : "12/30/21, 2:49 AM",
- "align" : "right"
- }, {
- "content" : "40",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "BlockJUnit4ClassRunnerWithParameters.java",
- "align" : "left"
- }, {
- "content" : "11",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "6/23/17, 4:16 PM",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "TemporaryFolder.java",
- "align" : "left"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "8",
- "align" : "right"
- }, {
- "content" : "11",
- "align" : "right"
- }, {
- "content" : "10/11/20, 9:56 AM",
- "align" : "right"
- }, {
- "content" : "34",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "AllMembersSupplier.java",
- "align" : "left"
- }, {
- "content" : "13",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "6/18/14, 1:42 AM",
- "align" : "right"
- }, {
- "content" : "33",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "TestCase.java",
- "align" : "left"
- }, {
- "content" : "14",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "10",
- "align" : "right"
- }, {
- "content" : "10/28/16, 3:01 PM",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- } ]
- } ]
- }
- }, {
- "type" : "Intensive Coupling",
- "anchorId" : "INTENSIVE_COUPLING",
- "title" : "Intensive Coupling",
- "methodLevel" : true,
- "problem" : "Method calls too many methods from a few unrelated classes (often in a separate package).",
- "solution" : "Move the calling method to a class more closely related to the other classes that the original method can call.",
- "maxPriority" : 4,
- "chart" : {
- "canvasId" : "chart_INTENSIVE_COUPLING",
- "bubbles" : [ {
- "id" : "ParentRunner.java",
- "label" : "ParentRunner.java",
- "x" : 1,
- "y" : 4,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 1,
- "changePronenessRank" : 4,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "Theories.java",
- "label" : "Theories.java",
- "x" : 2,
- "y" : 3,
- "r" : 18,
- "priority" : 2,
- "effortRank" : 2,
- "changePronenessRank" : 3,
- "color" : "rgba(170, 101, 67, 0.75)",
- "borderColor" : "rgb(170, 101, 67)"
- }, {
- "id" : "MethodValidator.java",
- "label" : "MethodValidator.java",
- "x" : 1,
- "y" : 1,
- "r" : 12,
- "priority" : 3,
- "effortRank" : 1,
- "changePronenessRank" : 1,
- "color" : "rgba(104, 137, 81, 0.75)",
- "borderColor" : "rgb(104, 137, 81)"
- }, {
- "id" : "AllMembersSupplier.java",
- "label" : "AllMembersSupplier.java",
- "x" : 3,
- "y" : 2,
- "r" : 6,
- "priority" : 4,
- "effortRank" : 3,
- "changePronenessRank" : 2,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
+ {
+ "type": "Refused Parent Bequest",
+ "anchorId": "RPB",
+ "title": "Refused Parent Bequest",
+ "methodLevel": false,
+ "problem": "Child class is large and often complex, but doesn't override or use many of the parent class's methods",
+ "solution": "Do one or more of the following:
- Extract the child class into a separate class. Move the methods that are used from the parent class into the child class.
- Make unused protected members private in the parent class.
- If a parent class has multiple children, move methods not used by all descendants to another class.",
+ "maxPriority": 14,
+ "chart": {
+ "canvasId": "chart_RPB",
+ "bubbles": [
+ {
+ "id": "Theories.java",
+ "label": "Theories.java",
+ "x": 5,
+ "y": 12,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 5,
+ "changePronenessRank": 12,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "id": "BlockJUnit4ClassRunner.java",
+ "label": "BlockJUnit4ClassRunner.java",
+ "x": 8,
+ "y": 14,
+ "r": 23,
+ "priority": 2,
+ "effortRank": 8,
+ "changePronenessRank": 14,
+ "color": "rgba(220, 72, 55, 0.75)",
+ "borderColor": "rgb(220, 72, 55)",
+ "path": "src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java"
+ },
+ {
+ "id": "ErrorReportingRunner.java",
+ "label": "ErrorReportingRunner.java",
+ "x": 1,
+ "y": 6,
+ "r": 21,
+ "priority": 3,
+ "effortRank": 1,
+ "changePronenessRank": 6,
+ "color": "rgba(205, 81, 59, 0.75)",
+ "borderColor": "rgb(205, 81, 59)",
+ "path": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java"
+ },
+ {
+ "id": "Categories.java",
+ "label": "Categories.java",
+ "x": 6,
+ "y": 11,
+ "r": 20,
+ "priority": 4,
+ "effortRank": 6,
+ "changePronenessRank": 11,
+ "color": "rgba(190, 89, 62, 0.75)",
+ "borderColor": "rgb(190, 89, 62)",
+ "path": "src/main/java/org/junit/experimental/categories/Categories.java"
+ },
+ {
+ "id": "Categories.java",
+ "label": "Categories.java",
+ "x": 9,
+ "y": 11,
+ "r": 18,
+ "priority": 5,
+ "effortRank": 9,
+ "changePronenessRank": 11,
+ "color": "rgba(175, 98, 66, 0.75)",
+ "borderColor": "rgb(175, 98, 66)",
+ "path": "src/main/java/org/junit/experimental/categories/Categories.java"
+ },
+ {
+ "id": "TestRunner.java",
+ "label": "TestRunner.java",
+ "x": 2,
+ "y": 2,
+ "r": 17,
+ "priority": 6,
+ "effortRank": 2,
+ "changePronenessRank": 2,
+ "color": "rgba(160, 106, 69, 0.75)",
+ "borderColor": "rgb(160, 106, 69)",
+ "path": "src/main/java/junit/textui/TestRunner.java"
+ },
+ {
+ "id": "JUnit4ClassRunner.java",
+ "label": "JUnit4ClassRunner.java",
+ "x": 3,
+ "y": 3,
+ "r": 16,
+ "priority": 7,
+ "effortRank": 3,
+ "changePronenessRank": 3,
+ "color": "rgba(145, 115, 72, 0.75)",
+ "borderColor": "rgb(145, 115, 72)",
+ "path": "src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java"
+ },
+ {
+ "id": "JUnit38ClassRunner.java",
+ "label": "JUnit38ClassRunner.java",
+ "x": 4,
+ "y": 4,
+ "r": 14,
+ "priority": 8,
+ "effortRank": 4,
+ "changePronenessRank": 4,
+ "color": "rgba(129, 123, 76, 0.75)",
+ "borderColor": "rgb(129, 123, 76)",
+ "path": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java"
+ },
+ {
+ "id": "ParentRunner.java",
+ "label": "ParentRunner.java",
+ "x": 13,
+ "y": 13,
+ "r": 13,
+ "priority": 9,
+ "effortRank": 13,
+ "changePronenessRank": 13,
+ "color": "rgba(114, 132, 79, 0.75)",
+ "borderColor": "rgb(114, 132, 79)",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "id": "FailOnTimeout.java",
+ "label": "FailOnTimeout.java",
+ "x": 10,
+ "y": 9,
+ "r": 12,
+ "priority": 10,
+ "effortRank": 10,
+ "changePronenessRank": 9,
+ "color": "rgba(99, 140, 82, 0.75)",
+ "borderColor": "rgb(99, 140, 82)",
+ "path": "src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java"
+ },
+ {
+ "id": "BlockJUnit4ClassRunnerWithParameters.java",
+ "label": "BlockJUnit4ClassRunnerWithParameters.java",
+ "x": 7,
+ "y": 5,
+ "r": 10,
+ "priority": 11,
+ "effortRank": 7,
+ "changePronenessRank": 5,
+ "color": "rgba(84, 149, 86, 0.75)",
+ "borderColor": "rgb(84, 149, 86)",
+ "path": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java"
+ },
+ {
+ "id": "TemporaryFolder.java",
+ "label": "TemporaryFolder.java",
+ "x": 11,
+ "y": 8,
+ "r": 9,
+ "priority": 12,
+ "effortRank": 11,
+ "changePronenessRank": 8,
+ "color": "rgba(69, 157, 89, 0.75)",
+ "borderColor": "rgb(69, 157, 89)",
+ "path": "src/main/java/org/junit/rules/TemporaryFolder.java"
+ },
+ {
+ "id": "AllMembersSupplier.java",
+ "label": "AllMembersSupplier.java",
+ "x": 12,
+ "y": 7,
+ "r": 7,
+ "priority": 13,
+ "effortRank": 12,
+ "changePronenessRank": 7,
+ "color": "rgba(54, 166, 93, 0.75)",
+ "borderColor": "rgb(54, 166, 93)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java"
+ },
+ {
+ "id": "TestCase.java",
+ "label": "TestCase.java",
+ "x": 10,
+ "y": 1,
+ "r": 6,
+ "priority": 14,
+ "effortRank": 10,
+ "changePronenessRank": 1,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/junit/framework/TestCase.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "Theories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "5/25/17, 11:19 AM",
+ "align": "right"
+ },
+ {
+ "content": "46",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "BlockJUnit4ClassRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "14",
+ "align": "right"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ },
+ {
+ "content": "3/14/19, 9:06 AM",
+ "align": "right"
+ },
+ {
+ "content": "104",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "ErrorReportingRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/ErrorReportingRunner.java"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "10/10/22, 3:22 PM",
+ "align": "right"
+ },
+ {
+ "content": "28",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Categories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/categories/Categories.java"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "11",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "1/9/17, 9:18 PM",
+ "align": "right"
+ },
+ {
+ "content": "39",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Categories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/categories/Categories.java"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "11",
+ "align": "right"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "1/9/17, 9:18 PM",
+ "align": "right"
+ },
+ {
+ "content": "39",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "TestRunner.java",
+ "align": "left",
+ "path": "src/main/java/junit/textui/TestRunner.java"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "3/29/15, 4:17 PM",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "JUnit4ClassRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/JUnit4ClassRunner.java"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "9/12/14, 3:18 PM",
+ "align": "right"
+ },
+ {
+ "content": "16",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "JUnit38ClassRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "7/30/18, 12:07 PM",
+ "align": "right"
+ },
+ {
+ "content": "23",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "ParentRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ },
+ {
+ "content": "11/27/19, 1:46 PM",
+ "align": "right"
+ },
+ {
+ "content": "97",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "FailOnTimeout.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/statements/FailOnTimeout.java"
+ },
+ {
+ "content": "10",
+ "align": "right"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "10",
+ "align": "right"
+ },
+ {
+ "content": "12/30/21, 2:49 AM",
+ "align": "right"
+ },
+ {
+ "content": "40",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "BlockJUnit4ClassRunnerWithParameters.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java"
+ },
+ {
+ "content": "11",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "6/23/17, 4:16 PM",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "TemporaryFolder.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/rules/TemporaryFolder.java"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ },
+ {
+ "content": "11",
+ "align": "right"
+ },
+ {
+ "content": "10/11/20, 9:56 AM",
+ "align": "right"
+ },
+ {
+ "content": "34",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "AllMembersSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "6/18/14, 1:42 AM",
+ "align": "right"
+ },
+ {
+ "content": "33",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "TestCase.java",
+ "align": "left",
+ "path": "src/main/java/junit/framework/TestCase.java"
+ },
+ {
+ "content": "14",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "10",
+ "align": "right"
+ },
+ {
+ "content": "10/28/16, 3:01 PM",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
},
- "table" : {
- "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "ParentRunner.java",
- "align" : "left"
- }, {
- "content" : "order(Orderer)",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "11/27/19, 1:46 PM",
- "align" : "right"
- }, {
- "content" : "97",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Theories.java",
- "align" : "left"
- }, {
- "content" : "validateTestMethods(List<Throwable>)",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "5/25/17, 11:19 AM",
- "align" : "right"
- }, {
- "content" : "46",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "MethodValidator.java",
- "align" : "left"
- }, {
- "content" : "validateTestMethods(Class<?>,boolean)",
- "align" : "left"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "6/4/15, 11:26 PM",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "AllMembersSupplier.java",
- "align" : "left"
- }, {
- "content" : "addMultiPointMethods(ParameterSignature,List<PotentialAssignment>)",
- "align" : "left"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "6/18/14, 1:42 AM",
- "align" : "right"
- }, {
- "content" : "33",
- "align" : "right"
- } ]
- } ]
- }
- }, {
- "type" : "Dispersed Coupling",
- "anchorId" : "DISPERSED_COUPLING",
- "title" : "Dispersed Coupling",
- "methodLevel" : true,
- "problem" : "Method calls a few methods in many classes",
- "solution" : "Reduce the size of the calling method. Extract methods from the calling method into the target classes.",
- "maxPriority" : 14,
- "chart" : {
- "canvasId" : "chart_DISPERSED_COUPLING",
- "bubbles" : [ {
- "id" : "ParentRunner.java",
- "label" : "ParentRunner.java",
- "x" : 1,
- "y" : 14,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 1,
- "changePronenessRank" : 14,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "Theories.java",
- "label" : "Theories.java",
- "x" : 3,
- "y" : 12,
- "r" : 23,
- "priority" : 2,
- "effortRank" : 3,
- "changePronenessRank" : 12,
- "color" : "rgba(220, 72, 55, 0.75)",
- "borderColor" : "rgb(220, 72, 55)"
- }, {
- "id" : "Theories.java",
- "label" : "Theories.java",
- "x" : 3,
- "y" : 12,
- "r" : 21,
- "priority" : 3,
- "effortRank" : 3,
- "changePronenessRank" : 12,
- "color" : "rgba(205, 81, 59, 0.75)",
- "borderColor" : "rgb(205, 81, 59)"
- }, {
- "id" : "Throwables.java",
- "label" : "Throwables.java",
- "x" : 2,
- "y" : 9,
- "r" : 20,
- "priority" : 4,
- "effortRank" : 2,
- "changePronenessRank" : 9,
- "color" : "rgba(190, 89, 62, 0.75)",
- "borderColor" : "rgb(190, 89, 62)"
- }, {
- "id" : "Assert.java",
- "label" : "Assert.java",
- "x" : 6,
- "y" : 13,
- "r" : 18,
- "priority" : 5,
- "effortRank" : 6,
- "changePronenessRank" : 13,
- "color" : "rgba(175, 98, 66, 0.75)",
- "borderColor" : "rgb(175, 98, 66)"
- }, {
- "id" : "Throwables.java",
- "label" : "Throwables.java",
- "x" : 3,
- "y" : 9,
- "r" : 17,
- "priority" : 6,
- "effortRank" : 3,
- "changePronenessRank" : 9,
- "color" : "rgba(160, 106, 69, 0.75)",
- "borderColor" : "rgb(160, 106, 69)"
- }, {
- "id" : "TestRunner.java",
- "label" : "TestRunner.java",
- "x" : 1,
- "y" : 5,
- "r" : 16,
- "priority" : 7,
- "effortRank" : 1,
- "changePronenessRank" : 5,
- "color" : "rgba(145, 115, 72, 0.75)",
- "borderColor" : "rgb(145, 115, 72)"
- }, {
- "id" : "BlockJUnit4ClassRunnerWithParameters.java",
- "label" : "BlockJUnit4ClassRunnerWithParameters.java",
- "x" : 7,
- "y" : 10,
- "r" : 14,
- "priority" : 8,
- "effortRank" : 7,
- "changePronenessRank" : 10,
- "color" : "rgba(129, 123, 76, 0.75)",
- "borderColor" : "rgb(129, 123, 76)"
- }, {
- "id" : "BaseTestRunner.java",
- "label" : "BaseTestRunner.java",
- "x" : 4,
- "y" : 6,
- "r" : 13,
- "priority" : 9,
- "effortRank" : 4,
- "changePronenessRank" : 6,
- "color" : "rgba(114, 132, 79, 0.75)",
- "borderColor" : "rgb(114, 132, 79)"
- }, {
- "id" : "JUnit38ClassRunner.java",
- "label" : "JUnit38ClassRunner.java",
- "x" : 5,
- "y" : 7,
- "r" : 12,
- "priority" : 10,
- "effortRank" : 5,
- "changePronenessRank" : 7,
- "color" : "rgba(99, 140, 82, 0.75)",
- "borderColor" : "rgb(99, 140, 82)"
- }, {
- "id" : "SpecificDataPointsSupplier.java",
- "label" : "SpecificDataPointsSupplier.java",
- "x" : 5,
- "y" : 4,
- "r" : 10,
- "priority" : 11,
- "effortRank" : 5,
- "changePronenessRank" : 4,
- "color" : "rgba(84, 149, 86, 0.75)",
- "borderColor" : "rgb(84, 149, 86)"
- }, {
- "id" : "SpecificDataPointsSupplier.java",
- "label" : "SpecificDataPointsSupplier.java",
- "x" : 5,
- "y" : 4,
- "r" : 9,
- "priority" : 12,
- "effortRank" : 5,
- "changePronenessRank" : 4,
- "color" : "rgba(69, 157, 89, 0.75)",
- "borderColor" : "rgb(69, 157, 89)"
- }, {
- "id" : "SpecificDataPointsSupplier.java",
- "label" : "SpecificDataPointsSupplier.java",
- "x" : 5,
- "y" : 4,
- "r" : 7,
- "priority" : 13,
- "effortRank" : 5,
- "changePronenessRank" : 4,
- "color" : "rgba(54, 166, 93, 0.75)",
- "borderColor" : "rgb(54, 166, 93)"
- }, {
- "id" : "SpecificDataPointsSupplier.java",
- "label" : "SpecificDataPointsSupplier.java",
- "x" : 5,
- "y" : 4,
- "r" : 6,
- "priority" : 14,
- "effortRank" : 5,
- "changePronenessRank" : 4,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
+ {
+ "type": "Intensive Coupling",
+ "anchorId": "INTENSIVE_COUPLING",
+ "title": "Intensive Coupling",
+ "methodLevel": true,
+ "problem": "Method calls too many methods from a few unrelated classes (often in a separate package).",
+ "solution": "Move the calling method to a class more closely related to the other classes that the original method can call.",
+ "maxPriority": 4,
+ "chart": {
+ "canvasId": "chart_INTENSIVE_COUPLING",
+ "bubbles": [
+ {
+ "id": "ParentRunner.java",
+ "label": "ParentRunner.java",
+ "x": 1,
+ "y": 4,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 1,
+ "changePronenessRank": 4,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "id": "Theories.java",
+ "label": "Theories.java",
+ "x": 2,
+ "y": 3,
+ "r": 18,
+ "priority": 2,
+ "effortRank": 2,
+ "changePronenessRank": 3,
+ "color": "rgba(170, 101, 67, 0.75)",
+ "borderColor": "rgb(170, 101, 67)",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "id": "MethodValidator.java",
+ "label": "MethodValidator.java",
+ "x": 1,
+ "y": 1,
+ "r": 12,
+ "priority": 3,
+ "effortRank": 1,
+ "changePronenessRank": 1,
+ "color": "rgba(104, 137, 81, 0.75)",
+ "borderColor": "rgb(104, 137, 81)",
+ "path": "src/main/java/org/junit/internal/runners/MethodValidator.java"
+ },
+ {
+ "id": "AllMembersSupplier.java",
+ "label": "AllMembersSupplier.java",
+ "x": 3,
+ "y": 2,
+ "r": 6,
+ "priority": 4,
+ "effortRank": 3,
+ "changePronenessRank": 2,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Method",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "ParentRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "content": "order(Orderer)",
+ "align": "left"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "11/27/19, 1:46 PM",
+ "align": "right"
+ },
+ {
+ "content": "97",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Theories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "content": "validateTestMethods(List<Throwable>)",
+ "align": "left"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "5/25/17, 11:19 AM",
+ "align": "right"
+ },
+ {
+ "content": "46",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "MethodValidator.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/MethodValidator.java"
+ },
+ {
+ "content": "validateTestMethods(Class<?>,boolean)",
+ "align": "left"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "6/4/15, 11:26 PM",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "AllMembersSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/AllMembersSupplier.java"
+ },
+ {
+ "content": "addMultiPointMethods(ParameterSignature,List<PotentialAssignment>)",
+ "align": "left"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "6/18/14, 1:42 AM",
+ "align": "right"
+ },
+ {
+ "content": "33",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
},
- "table" : {
- "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "ParentRunner.java",
- "align" : "left"
- }, {
- "content" : "filter(Filter)",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "14",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "11/27/19, 1:46 PM",
- "align" : "right"
- }, {
- "content" : "97",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Theories.java",
- "align" : "left"
- }, {
- "content" : "validateDataPointMethods(List<Throwable>)",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "5/25/17, 11:19 AM",
- "align" : "right"
- }, {
- "content" : "46",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Theories.java",
- "align" : "left"
- }, {
- "content" : "validateDataPointFields(List<Throwable>)",
- "align" : "left"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "5/25/17, 11:19 AM",
- "align" : "right"
- }, {
- "content" : "46",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Throwables.java",
- "align" : "left"
- }, {
- "content" : "getCauseStackTraceLines(Throwable)",
- "align" : "left"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "1/4/21, 4:25 PM",
- "align" : "right"
- }, {
- "content" : "8",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Assert.java",
- "align" : "left"
- }, {
- "content" : "assertThrows(String,Class<T>,ThrowingRunnable)",
- "align" : "left"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "13",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "9/6/20, 12:53 PM",
- "align" : "right"
- }, {
- "content" : "62",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Throwables.java",
- "align" : "left"
- }, {
- "content" : "getTrimmedStackTraceLines(Throwable)",
- "align" : "left"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "1/4/21, 4:25 PM",
- "align" : "right"
- }, {
- "content" : "8",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "TestRunner.java",
- "align" : "left"
- }, {
- "content" : "start(String[])",
- "align" : "left"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "3/29/15, 4:17 PM",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "BlockJUnit4ClassRunnerWithParameters.java",
- "align" : "left"
- }, {
- "content" : "createTestUsingFieldInjection()",
- "align" : "left"
- }, {
- "content" : "8",
- "align" : "right"
- }, {
- "content" : "10",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "6/23/17, 4:16 PM",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "BaseTestRunner.java",
- "align" : "left"
- }, {
- "content" : "getTest(String)",
- "align" : "left"
- }, {
- "content" : "9",
- "align" : "right"
- }, {
- "content" : "6",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "10/14/16, 5:19 PM",
- "align" : "right"
- }, {
- "content" : "9",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "JUnit38ClassRunner.java",
- "align" : "left"
- }, {
- "content" : "makeDescription(Test)",
- "align" : "left"
- }, {
- "content" : "10",
- "align" : "right"
- }, {
- "content" : "7",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "7/30/18, 12:07 PM",
- "align" : "right"
- }, {
- "content" : "23",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "SpecificDataPointsSupplier.java",
- "align" : "left"
- }, {
- "content" : "getDataPointsMethods(ParameterSignature)",
- "align" : "left"
- }, {
- "content" : "11",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "3/16/13, 7:30 PM",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "SpecificDataPointsSupplier.java",
- "align" : "left"
- }, {
- "content" : "getDataPointsFields(ParameterSignature)",
- "align" : "left"
- }, {
- "content" : "12",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "3/16/13, 7:30 PM",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "SpecificDataPointsSupplier.java",
- "align" : "left"
- }, {
- "content" : "getSingleDataPointMethods(ParameterSignature)",
- "align" : "left"
- }, {
- "content" : "13",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "3/16/13, 7:30 PM",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "SpecificDataPointsSupplier.java",
- "align" : "left"
- }, {
- "content" : "getSingleDataPointFields(ParameterSignature)",
- "align" : "left"
- }, {
- "content" : "14",
- "align" : "right"
- }, {
- "content" : "4",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- }, {
- "content" : "3/16/13, 7:30 PM",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- } ]
- } ]
- }
- }, {
- "type" : "Shotgun Surgery",
- "anchorId" : "SHOTGUN_SURGERY",
- "title" : "Shotgun Surgery",
- "methodLevel" : true,
- "problem" : "Method is called by many methods in many classes",
- "solution" : "- Move the method closer to the calling classes (move the behavior closer to the data) if it is small.
- If it is a large method, treat it as a Brain Method and decompose it into two or more smaller methods.",
- "maxPriority" : 3,
- "chart" : {
- "canvasId" : "chart_SHOTGUN_SURGERY",
- "bubbles" : [ {
- "id" : "FrameworkMethod.java",
- "label" : "FrameworkMethod.java",
- "x" : 1,
- "y" : 2,
- "r" : 24,
- "priority" : 1,
- "effortRank" : 1,
- "changePronenessRank" : 2,
- "color" : "rgba(235, 64, 52, 0.75)",
- "borderColor" : "rgb(235, 64, 52)"
- }, {
- "id" : "TestClass.java",
- "label" : "TestClass.java",
- "x" : 2,
- "y" : 3,
- "r" : 15,
- "priority" : 2,
- "effortRank" : 2,
- "changePronenessRank" : 3,
- "color" : "rgba(137, 119, 74, 0.75)",
- "borderColor" : "rgb(137, 119, 74)"
- }, {
- "id" : "Statement.java",
- "label" : "Statement.java",
- "x" : 3,
- "y" : 1,
- "r" : 6,
- "priority" : 3,
- "effortRank" : 3,
- "changePronenessRank" : 1,
- "color" : "rgba(39, 174, 96, 0.75)",
- "borderColor" : "rgb(39, 174, 96)"
- } ],
- "xaxisLabel" : "Effort to refactor",
- "yaxisLabel" : "Relative churn (impact)"
+ {
+ "type": "Dispersed Coupling",
+ "anchorId": "DISPERSED_COUPLING",
+ "title": "Dispersed Coupling",
+ "methodLevel": true,
+ "problem": "Method calls a few methods in many classes",
+ "solution": "Reduce the size of the calling method. Extract methods from the calling method into the target classes.",
+ "maxPriority": 14,
+ "chart": {
+ "canvasId": "chart_DISPERSED_COUPLING",
+ "bubbles": [
+ {
+ "id": "ParentRunner.java",
+ "label": "ParentRunner.java",
+ "x": 1,
+ "y": 14,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 1,
+ "changePronenessRank": 14,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "id": "Theories.java",
+ "label": "Theories.java",
+ "x": 3,
+ "y": 12,
+ "r": 23,
+ "priority": 2,
+ "effortRank": 3,
+ "changePronenessRank": 12,
+ "color": "rgba(220, 72, 55, 0.75)",
+ "borderColor": "rgb(220, 72, 55)",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "id": "Theories.java",
+ "label": "Theories.java",
+ "x": 3,
+ "y": 12,
+ "r": 21,
+ "priority": 3,
+ "effortRank": 3,
+ "changePronenessRank": 12,
+ "color": "rgba(205, 81, 59, 0.75)",
+ "borderColor": "rgb(205, 81, 59)",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "id": "Throwables.java",
+ "label": "Throwables.java",
+ "x": 2,
+ "y": 9,
+ "r": 20,
+ "priority": 4,
+ "effortRank": 2,
+ "changePronenessRank": 9,
+ "color": "rgba(190, 89, 62, 0.75)",
+ "borderColor": "rgb(190, 89, 62)",
+ "path": "src/main/java/org/junit/internal/Throwables.java"
+ },
+ {
+ "id": "Assert.java",
+ "label": "Assert.java",
+ "x": 6,
+ "y": 13,
+ "r": 18,
+ "priority": 5,
+ "effortRank": 6,
+ "changePronenessRank": 13,
+ "color": "rgba(175, 98, 66, 0.75)",
+ "borderColor": "rgb(175, 98, 66)",
+ "path": "src/main/java/org/junit/Assert.java"
+ },
+ {
+ "id": "Throwables.java",
+ "label": "Throwables.java",
+ "x": 3,
+ "y": 9,
+ "r": 17,
+ "priority": 6,
+ "effortRank": 3,
+ "changePronenessRank": 9,
+ "color": "rgba(160, 106, 69, 0.75)",
+ "borderColor": "rgb(160, 106, 69)",
+ "path": "src/main/java/org/junit/internal/Throwables.java"
+ },
+ {
+ "id": "TestRunner.java",
+ "label": "TestRunner.java",
+ "x": 1,
+ "y": 5,
+ "r": 16,
+ "priority": 7,
+ "effortRank": 1,
+ "changePronenessRank": 5,
+ "color": "rgba(145, 115, 72, 0.75)",
+ "borderColor": "rgb(145, 115, 72)",
+ "path": "src/main/java/junit/textui/TestRunner.java"
+ },
+ {
+ "id": "BlockJUnit4ClassRunnerWithParameters.java",
+ "label": "BlockJUnit4ClassRunnerWithParameters.java",
+ "x": 7,
+ "y": 10,
+ "r": 14,
+ "priority": 8,
+ "effortRank": 7,
+ "changePronenessRank": 10,
+ "color": "rgba(129, 123, 76, 0.75)",
+ "borderColor": "rgb(129, 123, 76)",
+ "path": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java"
+ },
+ {
+ "id": "BaseTestRunner.java",
+ "label": "BaseTestRunner.java",
+ "x": 4,
+ "y": 6,
+ "r": 13,
+ "priority": 9,
+ "effortRank": 4,
+ "changePronenessRank": 6,
+ "color": "rgba(114, 132, 79, 0.75)",
+ "borderColor": "rgb(114, 132, 79)",
+ "path": "src/main/java/junit/runner/BaseTestRunner.java"
+ },
+ {
+ "id": "JUnit38ClassRunner.java",
+ "label": "JUnit38ClassRunner.java",
+ "x": 5,
+ "y": 7,
+ "r": 12,
+ "priority": 10,
+ "effortRank": 5,
+ "changePronenessRank": 7,
+ "color": "rgba(99, 140, 82, 0.75)",
+ "borderColor": "rgb(99, 140, 82)",
+ "path": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java"
+ },
+ {
+ "id": "SpecificDataPointsSupplier.java",
+ "label": "SpecificDataPointsSupplier.java",
+ "x": 5,
+ "y": 4,
+ "r": 10,
+ "priority": 11,
+ "effortRank": 5,
+ "changePronenessRank": 4,
+ "color": "rgba(84, 149, 86, 0.75)",
+ "borderColor": "rgb(84, 149, 86)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "id": "SpecificDataPointsSupplier.java",
+ "label": "SpecificDataPointsSupplier.java",
+ "x": 5,
+ "y": 4,
+ "r": 9,
+ "priority": 12,
+ "effortRank": 5,
+ "changePronenessRank": 4,
+ "color": "rgba(69, 157, 89, 0.75)",
+ "borderColor": "rgb(69, 157, 89)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "id": "SpecificDataPointsSupplier.java",
+ "label": "SpecificDataPointsSupplier.java",
+ "x": 5,
+ "y": 4,
+ "r": 7,
+ "priority": 13,
+ "effortRank": 5,
+ "changePronenessRank": 4,
+ "color": "rgba(54, 166, 93, 0.75)",
+ "borderColor": "rgb(54, 166, 93)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "id": "SpecificDataPointsSupplier.java",
+ "label": "SpecificDataPointsSupplier.java",
+ "x": 5,
+ "y": 4,
+ "r": 6,
+ "priority": 14,
+ "effortRank": 5,
+ "changePronenessRank": 4,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Method",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "ParentRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/ParentRunner.java"
+ },
+ {
+ "content": "filter(Filter)",
+ "align": "left"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "14",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "11/27/19, 1:46 PM",
+ "align": "right"
+ },
+ {
+ "content": "97",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Theories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "content": "validateDataPointMethods(List<Throwable>)",
+ "align": "left"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "5/25/17, 11:19 AM",
+ "align": "right"
+ },
+ {
+ "content": "46",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Theories.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/Theories.java"
+ },
+ {
+ "content": "validateDataPointFields(List<Throwable>)",
+ "align": "left"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "5/25/17, 11:19 AM",
+ "align": "right"
+ },
+ {
+ "content": "46",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Throwables.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/Throwables.java"
+ },
+ {
+ "content": "getCauseStackTraceLines(Throwable)",
+ "align": "left"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "1/4/21, 4:25 PM",
+ "align": "right"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Assert.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/Assert.java"
+ },
+ {
+ "content": "assertThrows(String,Class<T>,ThrowingRunnable)",
+ "align": "left"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "9/6/20, 12:53 PM",
+ "align": "right"
+ },
+ {
+ "content": "62",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Throwables.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/Throwables.java"
+ },
+ {
+ "content": "getTrimmedStackTraceLines(Throwable)",
+ "align": "left"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "1/4/21, 4:25 PM",
+ "align": "right"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "TestRunner.java",
+ "align": "left",
+ "path": "src/main/java/junit/textui/TestRunner.java"
+ },
+ {
+ "content": "start(String[])",
+ "align": "left"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "3/29/15, 4:17 PM",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "BlockJUnit4ClassRunnerWithParameters.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/parameterized/BlockJUnit4ClassRunnerWithParameters.java"
+ },
+ {
+ "content": "createTestUsingFieldInjection()",
+ "align": "left"
+ },
+ {
+ "content": "8",
+ "align": "right"
+ },
+ {
+ "content": "10",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "6/23/17, 4:16 PM",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "BaseTestRunner.java",
+ "align": "left",
+ "path": "src/main/java/junit/runner/BaseTestRunner.java"
+ },
+ {
+ "content": "getTest(String)",
+ "align": "left"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ },
+ {
+ "content": "6",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "10/14/16, 5:19 PM",
+ "align": "right"
+ },
+ {
+ "content": "9",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "JUnit38ClassRunner.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/internal/runners/JUnit38ClassRunner.java"
+ },
+ {
+ "content": "makeDescription(Test)",
+ "align": "left"
+ },
+ {
+ "content": "10",
+ "align": "right"
+ },
+ {
+ "content": "7",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "7/30/18, 12:07 PM",
+ "align": "right"
+ },
+ {
+ "content": "23",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "SpecificDataPointsSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "content": "getDataPointsMethods(ParameterSignature)",
+ "align": "left"
+ },
+ {
+ "content": "11",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "3/16/13, 7:30 PM",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "SpecificDataPointsSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "content": "getDataPointsFields(ParameterSignature)",
+ "align": "left"
+ },
+ {
+ "content": "12",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "3/16/13, 7:30 PM",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "SpecificDataPointsSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "content": "getSingleDataPointMethods(ParameterSignature)",
+ "align": "left"
+ },
+ {
+ "content": "13",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "3/16/13, 7:30 PM",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "SpecificDataPointsSupplier.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/experimental/theories/internal/SpecificDataPointsSupplier.java"
+ },
+ {
+ "content": "getSingleDataPointFields(ParameterSignature)",
+ "align": "left"
+ },
+ {
+ "content": "14",
+ "align": "right"
+ },
+ {
+ "content": "4",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ },
+ {
+ "content": "3/16/13, 7:30 PM",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
},
- "table" : {
- "headers" : [ "Class", "Method", "Priority", "Change Proneness Rank", "Effort Rank", "Most Recent Commit Date", "Commit Count" ],
- "rows" : [ {
- "cells" : [ {
- "content" : "FrameworkMethod.java",
- "align" : "left"
- }, {
- "content" : "getName()",
- "align" : "left"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "4/3/18, 9:57 PM",
- "align" : "right"
- }, {
- "content" : "34",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "TestClass.java",
- "align" : "left"
- }, {
- "content" : "getAnnotatedMethods(Class<?>)",
- "align" : "left"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "2",
- "align" : "right"
- }, {
- "content" : "4/13/19, 5:49 PM",
- "align" : "right"
- }, {
- "content" : "51",
- "align" : "right"
- } ]
- }, {
- "cells" : [ {
- "content" : "Statement.java",
- "align" : "left"
- }, {
- "content" : "evaluate()",
- "align" : "left"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "1",
- "align" : "right"
- }, {
- "content" : "3",
- "align" : "right"
- }, {
- "content" : "10/4/12, 3:16 PM",
- "align" : "right"
- }, {
- "content" : "5",
- "align" : "right"
- } ]
- } ]
+ {
+ "type": "Shotgun Surgery",
+ "anchorId": "SHOTGUN_SURGERY",
+ "title": "Shotgun Surgery",
+ "methodLevel": true,
+ "problem": "Method is called by many methods in many classes",
+ "solution": "- Move the method closer to the calling classes (move the behavior closer to the data) if it is small.
- If it is a large method, treat it as a Brain Method and decompose it into two or more smaller methods.",
+ "maxPriority": 3,
+ "chart": {
+ "canvasId": "chart_SHOTGUN_SURGERY",
+ "bubbles": [
+ {
+ "id": "FrameworkMethod.java",
+ "label": "FrameworkMethod.java",
+ "x": 1,
+ "y": 2,
+ "r": 24,
+ "priority": 1,
+ "effortRank": 1,
+ "changePronenessRank": 2,
+ "color": "rgba(235, 64, 52, 0.75)",
+ "borderColor": "rgb(235, 64, 52)",
+ "path": "src/main/java/org/junit/runners/model/FrameworkMethod.java"
+ },
+ {
+ "id": "TestClass.java",
+ "label": "TestClass.java",
+ "x": 2,
+ "y": 3,
+ "r": 15,
+ "priority": 2,
+ "effortRank": 2,
+ "changePronenessRank": 3,
+ "color": "rgba(137, 119, 74, 0.75)",
+ "borderColor": "rgb(137, 119, 74)",
+ "path": "src/main/java/org/junit/runners/model/TestClass.java"
+ },
+ {
+ "id": "Statement.java",
+ "label": "Statement.java",
+ "x": 3,
+ "y": 1,
+ "r": 6,
+ "priority": 3,
+ "effortRank": 3,
+ "changePronenessRank": 1,
+ "color": "rgba(39, 174, 96, 0.75)",
+ "borderColor": "rgb(39, 174, 96)",
+ "path": "src/main/java/org/junit/runners/model/Statement.java"
+ }
+ ],
+ "xaxisLabel": "Effort to refactor",
+ "yaxisLabel": "Relative churn (impact)"
+ },
+ "table": {
+ "headers": [
+ "Class",
+ "Method",
+ "Priority",
+ "Change Proneness Rank",
+ "Effort Rank",
+ "Most Recent Commit Date",
+ "Commit Count"
+ ],
+ "rows": [
+ {
+ "cells": [
+ {
+ "content": "FrameworkMethod.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/model/FrameworkMethod.java"
+ },
+ {
+ "content": "getName()",
+ "align": "left"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "4/3/18, 9:57 PM",
+ "align": "right"
+ },
+ {
+ "content": "34",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "TestClass.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/model/TestClass.java"
+ },
+ {
+ "content": "getAnnotatedMethods(Class<?>)",
+ "align": "left"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "2",
+ "align": "right"
+ },
+ {
+ "content": "4/13/19, 5:49 PM",
+ "align": "right"
+ },
+ {
+ "content": "51",
+ "align": "right"
+ }
+ ]
+ },
+ {
+ "cells": [
+ {
+ "content": "Statement.java",
+ "align": "left",
+ "path": "src/main/java/org/junit/runners/model/Statement.java"
+ },
+ {
+ "content": "evaluate()",
+ "align": "left"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "1",
+ "align": "right"
+ },
+ {
+ "content": "3",
+ "align": "right"
+ },
+ {
+ "content": "10/4/12, 3:16 PM",
+ "align": "right"
+ },
+ {
+ "content": "5",
+ "align": "right"
+ }
+ ]
+ }
+ ]
+ }
}
- } ],
- "classCycles" : {
- "hasCycles" : true,
- "summary" : [ {
- "cycleName" : "JUnitCore",
- "priority" : 1,
- "classCount" : 9,
- "relationshipCount" : 16
- }, {
- "cycleName" : "InexactComparisonCriteria",
- "priority" : 2,
- "classCount" : 7,
- "relationshipCount" : 13
- }, {
- "cycleName" : "RuleMemberValidator$MethodMustBeARule",
- "priority" : 3,
- "classCount" : 7,
- "relationshipCount" : 12
- }, {
- "cycleName" : "Ordering",
- "priority" : 4,
- "classCount" : 6,
- "relationshipCount" : 11
- }, {
- "cycleName" : "Throwables",
- "priority" : 5,
- "classCount" : 6,
- "relationshipCount" : 10
- }, {
- "cycleName" : "ComparisonFailure",
- "priority" : 6,
- "classCount" : 6,
- "relationshipCount" : 11
- }, {
- "cycleName" : "TestResult",
- "priority" : 7,
- "classCount" : 5,
- "relationshipCount" : 9
- }, {
- "cycleName" : "Result",
- "priority" : 8,
- "classCount" : 4,
- "relationshipCount" : 7
- }, {
- "cycleName" : "FilterFactories",
- "priority" : 9,
- "classCount" : 4,
- "relationshipCount" : 6
- }, {
- "cycleName" : "ComparisonFailure$ComparisonCompactor",
- "priority" : 10,
- "classCount" : 4,
- "relationshipCount" : 5
- }, {
- "cycleName" : "MaxHistory",
- "priority" : 11,
- "classCount" : 3,
- "relationshipCount" : 4
- }, {
- "cycleName" : "ComparisonCompactor",
- "priority" : 12,
- "classCount" : 3,
- "relationshipCount" : 3
- }, {
- "cycleName" : "Filterable",
- "priority" : 13,
- "classCount" : 3,
- "relationshipCount" : 4
- }, {
- "cycleName" : "Timeout$Builder",
- "priority" : 14,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "Stopwatch$InternalWatcher",
- "priority" : 15,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "JUnit4TestAdapter",
- "priority" : 16,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "MultipleFailureException",
- "priority" : 17,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "ExpectedException$ExpectedExceptionStatement",
- "priority" : 18,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "TemporaryFolder$Builder",
- "priority" : 19,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "RunNotifier$SafeNotifier",
- "priority" : 20,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "AllMembersSupplier",
- "priority" : 21,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "FromDataPoints",
- "priority" : 22,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "TestedOn",
- "priority" : 23,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "FailOnTimeout",
- "priority" : 24,
- "classCount" : 2,
- "relationshipCount" : 2
- }, {
- "cycleName" : "Categories",
- "priority" : 25,
- "classCount" : 2,
- "relationshipCount" : 2
- } ],
- "largestCycle" : {
- "hasCycleMap" : true,
- "cycleName" : "JUnitCore",
- "cycleIdentifier" : "graph_JUnitCore_1l7a2el",
- "classCount" : 9,
- "relationshipCount" : 16,
- "dot" : "strict digraph G {\nRequest -> JUnitCore [ label = \"1\" weight = \"1\" color = \"red\" ];\nJUnitCore -> JUnitCommandLineParseResult [ label = \"3\" weight = \"3\" ];\nJUnitCore -> Request [ label = \"3\" weight = \"3\" ];\nFilterRequest -> Request [ label = \"4\" weight = \"4\" ];\nMemoizingRequest -> Request [ label = \"1\" weight = \"1\" color = \"red\" ];\nOrderingRequest -> Request [ label = \"3\" weight = \"3\" color = \"red\" ];\nSortingRequest -> Request [ label = \"4\" weight = \"4\" ];\nFilterFactories -> Request [ label = \"2\" weight = \"2\" ];\nJUnitCommandLineParseResult -> Request [ label = \"8\" weight = \"8\" ];\nRequest -> ClassRequest [ label = \"2\" weight = \"2\" ];\nRequest -> FilterRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> SortingRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> OrderingRequest [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nClassRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> FilterFactories [ label = \"1\" weight = \"1\" ];\nJUnitCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCore.java\" target=\"_blank\"];\nRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" color=red style=filled];\nOrderingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/OrderingRequest.java\" target=\"_blank\"];\nMemoizingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/MemoizingRequest.java\" target=\"_blank\"];\nSortingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/SortingRequest.java\" target=\"_blank\"];\nFilterRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/FilterRequest.java\" target=\"_blank\"];\nClassRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\"];\nJUnitCommandLineParseResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\"];\nFilterFactories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactories.java\" target=\"_blank\"];\n}",
- "dotThresholdExceeded" : false,
- "breakdown" : [ {
- "className" : "JUnitCore",
- "edgesHtml" : "JUnitCore → JUnitCommandLineParseResult : 3
\nJUnitCore → Request : 3
\n"
- }, {
- "className" : "Request*",
- "edgesHtml" : "Request → JUnitCore : 1*
\nRequest → ClassRequest : 2
\nRequest → FilterRequest : 1*
\nRequest → SortingRequest : 1*
\nRequest → OrderingRequest : 1
\n"
- }, {
- "className" : "OrderingRequest",
- "edgesHtml" : "OrderingRequest → Request : 3*
\nOrderingRequest → MemoizingRequest : 1
\n"
- }, {
- "className" : "MemoizingRequest",
- "edgesHtml" : "MemoizingRequest → Request : 1*
\n"
- }, {
- "className" : "SortingRequest",
- "edgesHtml" : "SortingRequest → Request : 4
\n"
- }, {
- "className" : "FilterRequest",
- "edgesHtml" : "FilterRequest → Request : 4
\n"
- }, {
- "className" : "ClassRequest",
- "edgesHtml" : "ClassRequest → MemoizingRequest : 1
\n"
- }, {
- "className" : "JUnitCommandLineParseResult",
- "edgesHtml" : "JUnitCommandLineParseResult → Request : 8
\nJUnitCommandLineParseResult → FilterFactories : 1
\n"
- }, {
- "className" : "FilterFactories",
- "edgesHtml" : "FilterFactories → Request : 2
\n"
- } ]
+ ],
+ "classCycles": {
+ "hasCycles": true,
+ "summary": [
+ {
+ "cycleName": "JUnitCore",
+ "priority": 1,
+ "classCount": 9,
+ "relationshipCount": 16
+ },
+ {
+ "cycleName": "InexactComparisonCriteria",
+ "priority": 2,
+ "classCount": 7,
+ "relationshipCount": 13
+ },
+ {
+ "cycleName": "RuleMemberValidator$MethodMustBeARule",
+ "priority": 3,
+ "classCount": 7,
+ "relationshipCount": 12
+ },
+ {
+ "cycleName": "Ordering",
+ "priority": 4,
+ "classCount": 6,
+ "relationshipCount": 11
+ },
+ {
+ "cycleName": "Throwables",
+ "priority": 5,
+ "classCount": 6,
+ "relationshipCount": 10
+ },
+ {
+ "cycleName": "ComparisonFailure",
+ "priority": 6,
+ "classCount": 6,
+ "relationshipCount": 11
+ },
+ {
+ "cycleName": "TestResult",
+ "priority": 7,
+ "classCount": 5,
+ "relationshipCount": 9
+ },
+ {
+ "cycleName": "Result",
+ "priority": 8,
+ "classCount": 4,
+ "relationshipCount": 7
+ },
+ {
+ "cycleName": "FilterFactories",
+ "priority": 9,
+ "classCount": 4,
+ "relationshipCount": 6
+ },
+ {
+ "cycleName": "ComparisonFailure$ComparisonCompactor",
+ "priority": 10,
+ "classCount": 4,
+ "relationshipCount": 5
+ },
+ {
+ "cycleName": "MaxHistory",
+ "priority": 11,
+ "classCount": 3,
+ "relationshipCount": 4
+ },
+ {
+ "cycleName": "ComparisonCompactor",
+ "priority": 12,
+ "classCount": 3,
+ "relationshipCount": 3
+ },
+ {
+ "cycleName": "Filterable",
+ "priority": 13,
+ "classCount": 3,
+ "relationshipCount": 4
+ },
+ {
+ "cycleName": "Timeout$Builder",
+ "priority": 14,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "Stopwatch$InternalWatcher",
+ "priority": 15,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "JUnit4TestAdapter",
+ "priority": 16,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "MultipleFailureException",
+ "priority": 17,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "ExpectedException$ExpectedExceptionStatement",
+ "priority": 18,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "TemporaryFolder$Builder",
+ "priority": 19,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "RunNotifier$SafeNotifier",
+ "priority": 20,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "AllMembersSupplier",
+ "priority": 21,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "FromDataPoints",
+ "priority": 22,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "TestedOn",
+ "priority": 23,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "FailOnTimeout",
+ "priority": 24,
+ "classCount": 2,
+ "relationshipCount": 2
+ },
+ {
+ "cycleName": "Categories",
+ "priority": 25,
+ "classCount": 2,
+ "relationshipCount": 2
+ }
+ ],
+ "largestCycle": {
+ "hasCycleMap": true,
+ "cycleName": "JUnitCore",
+ "cycleIdentifier": "graph_JUnitCore_1l7a2el",
+ "classCount": 9,
+ "relationshipCount": 16,
+ "dot": "strict digraph G {\nRequest -> JUnitCore [ label = \"1\" weight = \"1\" color = \"red\" ];\nJUnitCore -> JUnitCommandLineParseResult [ label = \"3\" weight = \"3\" ];\nJUnitCore -> Request [ label = \"3\" weight = \"3\" ];\nFilterRequest -> Request [ label = \"4\" weight = \"4\" ];\nMemoizingRequest -> Request [ label = \"1\" weight = \"1\" color = \"red\" ];\nOrderingRequest -> Request [ label = \"3\" weight = \"3\" color = \"red\" ];\nSortingRequest -> Request [ label = \"4\" weight = \"4\" ];\nFilterFactories -> Request [ label = \"2\" weight = \"2\" ];\nJUnitCommandLineParseResult -> Request [ label = \"8\" weight = \"8\" ];\nRequest -> ClassRequest [ label = \"2\" weight = \"2\" ];\nRequest -> FilterRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> SortingRequest [ label = \"1\" weight = \"1\" color = \"red\" ];\nRequest -> OrderingRequest [ label = \"1\" weight = \"1\" ];\nOrderingRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nClassRequest -> MemoizingRequest [ label = \"1\" weight = \"1\" ];\nJUnitCommandLineParseResult -> FilterFactories [ label = \"1\" weight = \"1\" ];\nJUnitCore [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCore.java\" target=\"_blank\"];\nRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/Request.java\" target=\"_blank\" color=red style=filled];\nOrderingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/OrderingRequest.java\" target=\"_blank\"];\nMemoizingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/MemoizingRequest.java\" target=\"_blank\"];\nSortingRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/SortingRequest.java\" target=\"_blank\"];\nFilterRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/FilterRequest.java\" target=\"_blank\"];\nClassRequest [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/internal/requests/ClassRequest.java\" target=\"_blank\"];\nJUnitCommandLineParseResult [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/JUnitCommandLineParseResult.java\" target=\"_blank\"];\nFilterFactories [URL=\"https://github.com/junit-team/junit4/blob/300468b1efd48d76fac2f7bd6d576846dcbbf5ed/src/main/java/org/junit/runner/FilterFactories.java\" target=\"_blank\"];\n}",
+ "dotThresholdExceeded": false,
+ "breakdown": [
+ {
+ "className": "JUnitCore",
+ "edgesHtml": "JUnitCore → JUnitCommandLineParseResult : 3
\nJUnitCore → Request : 3
\n",
+ "classPath": "src/main/java/org/junit/runner/JUnitCore.java",
+ "marked": false
+ },
+ {
+ "className": "Request",
+ "edgesHtml": "Request → JUnitCore : 1*
\nRequest → ClassRequest : 2
\nRequest → FilterRequest : 1*
\nRequest → SortingRequest : 1*
\nRequest → OrderingRequest : 1
\n",
+ "classPath": "src/main/java/org/junit/runner/Request.java",
+ "marked": true
+ },
+ {
+ "className": "OrderingRequest",
+ "edgesHtml": "OrderingRequest → Request : 3*
\nOrderingRequest → MemoizingRequest : 1
\n",
+ "classPath": "src/main/java/org/junit/internal/requests/OrderingRequest.java",
+ "marked": false
+ },
+ {
+ "className": "MemoizingRequest",
+ "edgesHtml": "MemoizingRequest → Request : 1*
\n",
+ "classPath": "src/main/java/org/junit/internal/requests/MemoizingRequest.java",
+ "marked": false
+ },
+ {
+ "className": "SortingRequest",
+ "edgesHtml": "SortingRequest → Request : 4
\n",
+ "classPath": "src/main/java/org/junit/internal/requests/SortingRequest.java",
+ "marked": false
+ },
+ {
+ "className": "FilterRequest",
+ "edgesHtml": "FilterRequest → Request : 4
\n",
+ "classPath": "src/main/java/org/junit/internal/requests/FilterRequest.java",
+ "marked": false
+ },
+ {
+ "className": "ClassRequest",
+ "edgesHtml": "ClassRequest → MemoizingRequest : 1
\n",
+ "classPath": "src/main/java/org/junit/internal/requests/ClassRequest.java",
+ "marked": false
+ },
+ {
+ "className": "JUnitCommandLineParseResult",
+ "edgesHtml": "JUnitCommandLineParseResult → Request : 8
\nJUnitCommandLineParseResult → FilterFactories : 1
\n",
+ "classPath": "src/main/java/org/junit/runner/JUnitCommandLineParseResult.java",
+ "marked": false
+ },
+ {
+ "className": "FilterFactories",
+ "edgesHtml": "FilterFactories → Request : 2
\n",
+ "classPath": "src/main/java/org/junit/runner/FilterFactories.java",
+ "marked": false
+ }
+ ]
}
}
}
\ No newline at end of file
diff --git a/tests/unit/renderer.test.js b/tests/unit/renderer.test.js
index ff99e86..178d000 100644
--- a/tests/unit/renderer.test.js
+++ b/tests/unit/renderer.test.js
@@ -2,7 +2,7 @@ import { describe, it, expect } from 'bun:test';
import { JSDOM } from 'jsdom';
import { readFileSync } from 'node:fs';
import path from 'node:path';
-import { renderTemplate, initializeMustache, prepareReportData } from '../../lib/renderer.js';
+import { renderTemplate, initializeMustache, prepareReportData, classRelationshipMarkup, packageRelationshipMarkup } from '../../lib/renderer.js';
import { TABLE_CONFIG } from '../../lib/table-operations.js';
describe('Mustache Rendering', () => {
@@ -185,11 +185,12 @@ describe('templating safety (repository-provided templates are untrusted)', () =
});
// ---------------------------------------------------------------------------
-// Source-link cell output: both report templates render the class-
-// relationships cell inline; the rendering layer owns
-// the link-safety behavior around it. These guards pin the rendered output
-// so template or renderer changes cannot silently drop or weaken the
-// source links.
+// Source-link cell output: the report JSON carries the structured
+// ClassRelationshipDTO fields (sourceClassPath/targetClassPath relative to
+// the project root plus the simple class names), and the rendering layer
+// combines them with project.repoUrl, owns the link-safety behavior and
+// sanitizes the result. These guards pin the rendered output so template or
+// renderer changes cannot silently drop or weaken the source links.
// ---------------------------------------------------------------------------
describe('source-link cell rendering (owned by the report rendering layer)', () => {
@@ -197,52 +198,337 @@ describe('source-link cell rendering (owned by the report rendering layer)', ()
readFileSync(path.join(import.meta.dir, '../fixtures/junit4-report.json'), 'utf8')
);
+ const REPO_URL =
+ 'https://github.com/refactorfirst/RefactorFirst/blob/5258928239a496b74a704c7653240b82a325ccab/';
+ const REPORT_WRITER_PATH =
+ 'report/src/main/java/org/hjug/refactorfirst/report/ReportWriter.java';
+
+ it('builds the class-relationship markup from repoUrl, class paths and simple class names', () => {
+ // The exact example: repoUrl + sourceClassPath/targetClassPath form the
+ // hyperlink targets, the simple class names the anchor text, separated
+ // by the → arrow.
+ expect(classRelationshipMarkup(
+ {
+ sourceClassPath: REPORT_WRITER_PATH,
+ targetClassPath: REPORT_WRITER_PATH,
+ simpleSourceClassName: 'ReportWriter$SecureDirectoryOps',
+ simpleTargetClassName: 'ReportWriter$FallbackDirectoryOps'
+ },
+ REPO_URL
+ )).toBe(
+ 'ReportWriter$SecureDirectoryOps ' +
+ '→ ' +
+ 'ReportWriter$FallbackDirectoryOps'
+ );
+ });
+
+ it('appends the removal marker to marked classes', () => {
+ expect(classRelationshipMarkup(
+ {
+ sourceClassPath: 'src/main/java/demo/A.java',
+ targetClassPath: 'src/main/java/demo/B.java',
+ simpleSourceClassName: 'A',
+ simpleTargetClassName: 'B',
+ sourceMarked: true,
+ targetMarked: true
+ },
+ 'https://github.com/demo/repo/blob/main/'
+ )).toBe(
+ 'A* ' +
+ '→ ' +
+ 'B*'
+ );
+ });
+
+ it('encodes class-relationship path segments and tolerates a missing repoUrl trailing slash', () => {
+ expect(classRelationshipMarkup(
+ {
+ sourceClassPath: 'src/main/java/C#Foo.java',
+ targetClassPath: 'src/main/java/B?ar.java',
+ simpleSourceClassName: 'Foo',
+ simpleTargetClassName: 'Bar'
+ },
+ 'https://github.com/demo/repo'
+ )).toBe(
+ 'Foo ' +
+ '→ ' +
+ 'Bar'
+ );
+ });
+
+ it('returns null for entries without the structured class-relationship fields', () => {
+ expect(classRelationshipMarkup(null, REPO_URL)).toBeNull();
+ expect(classRelationshipMarkup('legacy label', REPO_URL)).toBeNull();
+ expect(classRelationshipMarkup({ sourceClass: 'org.example.A' }, REPO_URL)).toBeNull();
+ expect(classRelationshipMarkup({ renderedLabel: 'A' }, REPO_URL)).toBeNull();
+ });
+
+ it('builds the package-relationship markup from repoUrl, package paths and package names', () => {
+ // The package names double as the anchor text; the hyperlink targets are
+ // project.repoUrl plus the package directory paths relative to the project root
+ expect(packageRelationshipMarkup(
+ {
+ sourcePackage: 'org.hjug.graphbuilder.metrics',
+ targetPackage: 'org.hjug.graphbuilder',
+ sourcePackagePath: 'codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/',
+ targetPackagePath: 'codebase-graph-builder/src/main/java/org/hjug/graphbuilder/',
+ sourceMarked: false,
+ targetMarked: true
+ },
+ REPO_URL
+ )).toBe(
+ 'org.hjug.graphbuilder.metrics ' +
+ '→ ' +
+ 'org.hjug.graphbuilder*'
+ );
+ });
+
+ it('encodes package-relationship path segments and tolerates a missing repoUrl trailing slash', () => {
+ expect(packageRelationshipMarkup(
+ {
+ sourcePackage: 'org.demo.pkg',
+ targetPackage: 'org.demo.other',
+ sourcePackagePath: 'src/main/java/org/demo/pkg#dir/',
+ targetPackagePath: 'src/main/java/org/demo/other?dir/'
+ },
+ 'https://github.com/demo/repo'
+ )).toBe(
+ 'org.demo.pkg ' +
+ '→ ' +
+ 'org.demo.other'
+ );
+ });
+
+ it('returns null for entries without the structured package-relationship fields', () => {
+ expect(packageRelationshipMarkup(null, REPO_URL)).toBeNull();
+ expect(packageRelationshipMarkup('legacy label', REPO_URL)).toBeNull();
+ expect(packageRelationshipMarkup({ sourceMarked: true }, REPO_URL)).toBeNull();
+ expect(packageRelationshipMarkup({ renderedLabel: 'org.a → org.b : 1' }, REPO_URL)).toBeNull();
+ });
+
for (const templatePath of ['assets', 'public/assets']) {
- it(`restricts relationship labels to links and markers in ${templatePath}`, () => {
+ it(`renders hardened source links in the class-relationships cell (${templatePath})`, () => {
const template = readFileSync(
path.join(import.meta.dir, `../../${templatePath}/refactor-first-report.mustache`), 'utf8'
);
- const renderedLabel =
- '' +
- 'Source' +
- '* → Target : 1' +
- '
' +
- 'Unsafe';
- const data = structuredClone(junitFixture);
- for (const key of ['classRelationshipsToRemove', 'packageRelationshipsToRemove']) {
- data[key].relationships = [
- { ...data[key].relationships[0], renderedLabel,
- safeRenderedLabel: '' },
- { priority: 2, renderedLabel: null, safeRenderedLabel: 'Forged' }
- ];
- }
+ const data = {
+ project: { name: 'Demo', version: '1.0', repoUrl: REPO_URL },
+ classRelationshipsToRemove: {
+ hasRelationships: true,
+ relationships: [
+ {
+ sourceClassPath: REPORT_WRITER_PATH,
+ targetClassPath: REPORT_WRITER_PATH,
+ simpleSourceClassName: 'ReportWriter$SecureDirectoryOps',
+ simpleTargetClassName: 'ReportWriter$FallbackDirectoryOps',
+ sourceMarked: false,
+ targetMarked: false,
+ priority: 1,
+ cycleCount: 1,
+ effortRank: 1,
+ alsoRemovesPackageRelationship: false,
+ packageCycleCount: 0
+ },
+ // An entry without the structured fields renders an empty cell
+ { priority: 2 }
+ ]
+ },
+ packageRelationshipsToRemove: { hasRelationships: false, relationships: [] }
+ };
const original = structuredClone(data);
const html = renderTemplate(template, prepareReportData(data));
const doc = new JSDOM(html).window.document;
expect(data).toEqual(original);
- expect(html).not.toContain('body {');
- for (const table of ['class-relationships', 'package-relationships']) {
- const cells = doc.querySelectorAll(`table[data-rf-table="${table}"] tbody tr td:first-child`);
- const cell = cells[0];
- expect(cell.textContent).toContain('Source* → Target : 1');
- expect(cell.querySelector('strong')?.textContent).toBe('*');
- expect(cell.querySelector('a')?.getAttribute('href')).toBe('https://example.com/source');
- expect(cell.querySelector('a')?.getAttribute('target')).toBe('_blank');
- expect(cell.querySelector('a')?.getAttribute('rel')).toBe('noopener noreferrer');
- expect(cell.querySelector('a:last-child')?.hasAttribute('href')).toBe(false);
- for (const element of cell.querySelectorAll('*')) {
- expect(['A', 'STRONG']).toContain(element.tagName);
- for (const attribute of element.attributes) {
- expect(['href', 'target', 'rel']).toContain(attribute.name);
- }
+ const cells = doc.querySelectorAll('table[data-rf-table="class-relationships"] tbody tr td:first-child');
+ const cell = cells[0];
+ const anchors = cell.querySelectorAll('a');
+ expect(anchors.length).toBe(2);
+ expect(anchors[0].getAttribute('href')).toBe(REPO_URL + REPORT_WRITER_PATH);
+ expect(anchors[0].getAttribute('target')).toBe('_blank');
+ expect(anchors[0].getAttribute('rel')).toBe('noopener noreferrer');
+ expect(anchors[0].textContent).toBe('ReportWriter$SecureDirectoryOps');
+ expect(anchors[1].getAttribute('href')).toBe(REPO_URL + REPORT_WRITER_PATH);
+ expect(anchors[1].textContent).toBe('ReportWriter$FallbackDirectoryOps');
+ expect(cell.textContent).toBe('ReportWriter$SecureDirectoryOps → ReportWriter$FallbackDirectoryOps');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
}
- expect(cells[1].textContent).toBe('');
}
+ expect(cells[1].textContent).toBe('');
});
}
+ it('neutralizes hostile class-relationship fields down to links and markers', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+ const data = {
+ project: {
+ name: 'Demo',
+ version: '1.0',
+ repoUrl: 'https://github.com/demo/repo/blob/main/'
+ },
+ classRelationshipsToRemove: {
+ hasRelationships: true,
+ relationships: [
+ {
+ sourceClassPath: 'src/main/java/demo/A.java',
+ targetClassPath: 'src/main/java/demo/B.java',
+ simpleSourceClassName: 'Source
',
+ simpleTargetClassName: 'Target',
+ sourceMarked: true,
+ targetMarked: false,
+ priority: 1,
+ cycleCount: 1,
+ effortRank: 1,
+ alsoRemovesPackageRelationship: false,
+ packageCycleCount: 0
+ }
+ ]
+ },
+ packageRelationshipsToRemove: { hasRelationships: false, relationships: [] }
+ };
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="class-relationships"] tbody td.rf-text-left');
+ expect(cell).not.toBeNull();
+ // The hostile name is escaped into inert text; no img element is created
+ expect(cell.querySelector('img')).toBeNull();
+ expect(cell.querySelectorAll('a').length).toBe(2);
+ expect(cell.textContent).toContain('Source');
+ expect(cell.textContent).toContain('→ Target');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
+ }
+ }
+ });
+
+ it('strips javascript: URLs from class-relationship links', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+ const data = {
+ project: { name: 'Demo', version: '1.0', repoUrl: 'javascript:alert(1)//' },
+ classRelationshipsToRemove: {
+ hasRelationships: true,
+ relationships: [
+ {
+ sourceClassPath: 'src/main/java/demo/A.java',
+ targetClassPath: 'src/main/java/demo/B.java',
+ simpleSourceClassName: 'A',
+ simpleTargetClassName: 'B',
+ priority: 1,
+ cycleCount: 1,
+ effortRank: 1,
+ alsoRemovesPackageRelationship: false,
+ packageCycleCount: 0
+ }
+ ]
+ },
+ packageRelationshipsToRemove: { hasRelationships: false, relationships: [] }
+ };
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="class-relationships"] tbody td.rf-text-left');
+ expect(cell.querySelector('a[href]')).toBeNull();
+ expect(cell.textContent).toContain('A → B');
+ });
+
+ it('renders the package-relationships cell from repoUrl + package paths with hardened anchors', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+ const data = {
+ project: { name: 'Demo', version: '1.0', repoUrl: REPO_URL },
+ classRelationshipsToRemove: { hasRelationships: false, relationships: [] },
+ packageRelationshipsToRemove: {
+ hasRelationships: true,
+ relationships: [
+ {
+ sourcePackage: 'org.hjug.graphbuilder.metrics',
+ targetPackage: 'org.hjug.graphbuilder',
+ sourcePackagePath: 'codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/',
+ targetPackagePath: 'codebase-graph-builder/src/main/java/org/hjug/graphbuilder/',
+ sourceMarked: false,
+ targetMarked: true,
+ priority: 1,
+ cycleCount: 1,
+ effortRank: 1,
+ classRelationshipsToBreakPackage: []
+ }
+ ]
+ }
+ };
+ const original = structuredClone(data);
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ expect(data).toEqual(original);
+ const cell = doc.querySelector('table[data-rf-table="package-relationships"] tbody tr td:first-child');
+ expect(cell).not.toBeNull();
+ const anchors = cell.querySelectorAll('a');
+ expect(anchors.length).toBe(2);
+ expect(anchors[0].getAttribute('href'))
+ .toBe(REPO_URL + 'codebase-graph-builder/src/main/java/org/hjug/graphbuilder/metrics/');
+ expect(anchors[0].getAttribute('target')).toBe('_blank');
+ expect(anchors[0].getAttribute('rel')).toBe('noopener noreferrer');
+ expect(anchors[0].textContent).toBe('org.hjug.graphbuilder.metrics');
+ expect(anchors[1].textContent).toBe('org.hjug.graphbuilder');
+ expect(cell.textContent).toBe('org.hjug.graphbuilder.metrics → org.hjug.graphbuilder*');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
+ }
+ }
+ });
+
+ it('neutralizes hostile package-relationship fields down to links and markers', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+ const data = {
+ project: { name: 'Demo', version: '1.0', repoUrl: 'https://github.com/demo/repo/blob/main/' },
+ classRelationshipsToRemove: { hasRelationships: false, relationships: [] },
+ packageRelationshipsToRemove: {
+ hasRelationships: true,
+ relationships: [
+ {
+ sourcePackage: 'org.demo.pkg
',
+ targetPackage: 'org.demo.other',
+ sourcePackagePath: 'src/main/java/org/demo/pkg" onclick="alert(1)',
+ targetPackagePath: 'src/main/java/org/demo/other/',
+ sourceMarked: true,
+ targetMarked: false,
+ priority: 1,
+ cycleCount: 1,
+ effortRank: 1,
+ classRelationshipsToBreakPackage: []
+ }
+ ]
+ }
+ };
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="package-relationships"] tbody tr td:first-child');
+ expect(cell).not.toBeNull();
+ // The hostile name is escaped into inert text and the quote in the path cannot
+ // break out of the href attribute: no img element, no event handler attributes
+ expect(cell.querySelector('img')).toBeNull();
+ expect(cell.querySelector('[onclick]')).toBeNull();
+ expect(cell.textContent).toContain('org.demo.pkg');
+ expect(cell.textContent).toContain('→ org.demo.other');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
+ }
+ }
+ });
+
it('renders the class-relationships source-link cell with a hardened anchor', () => {
const template = readFileSync(
path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
@@ -260,6 +546,229 @@ describe('source-link cell rendering (owned by the report rendering layer)', ()
});
});
+// ---------------------------------------------------------------------------
+// Disharmony table source-link cells: the report JSON carries the plain file
+// name in the Class cell plus the source path relative to the project root;
+// the rendering layer combines the path with project.repoUrl and sanitizes
+// the anchor before it reaches the template.
+// ---------------------------------------------------------------------------
+
+describe('disharmony table source-link cell rendering', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+
+ /**
+ * Builds a one-row God Class findings report with the supplied Class cell.
+ * @param {object} classCell - Raw Class cell from the report JSON.
+ * @returns {object} Report fixture for the disharmony table.
+ */
+ function reportWithClassCell(classCell) {
+ return {
+ project: { name: 'Demo', version: '1.0', repoUrl: 'https://github.com/demo/repo/blob/main/' },
+ hasDisharmonies: true,
+ disharmonies: [{
+ anchorId: 'GOD',
+ title: 'God Classes',
+ problem: 'problem',
+ solution: 'solution',
+ table: {
+ headers: ['Class', 'Priority'],
+ rows: [{
+ cells: [classCell, { content: '1', align: 'right' }]
+ }]
+ }
+ }]
+ };
+ }
+
+ it('builds the Class cell link from repoUrl and the cell path', () => {
+ const data = reportWithClassCell({
+ content: 'TestClass.java',
+ path: 'src/main/java/com/example/TestClass.java',
+ align: 'left'
+ });
+ const original = structuredClone(data);
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ expect(data).toEqual(original);
+ const cell = doc.querySelector('table[data-rf-table="disharmony-GOD"] tbody td.rf-text-left');
+ expect(cell).not.toBeNull();
+ const link = cell.querySelector('a');
+ expect(link.getAttribute('href'))
+ .toBe('https://github.com/demo/repo/blob/main/src/main/java/com/example/TestClass.java');
+ expect(link.getAttribute('target')).toBe('_blank');
+ expect(link.getAttribute('rel')).toBe('noopener noreferrer');
+ expect(link.textContent).toBe('TestClass.java');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
+ }
+ }
+ });
+
+ it('neutralizes hostile disharmony cell fields down to a hardened link', () => {
+ const data = reportWithClassCell({
+ content: 'Test
Class.java',
+ path: 'src/main/java/com/example/TestClass" onclick="alert(1)',
+ align: 'left'
+ });
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="disharmony-GOD"] tbody td.rf-text-left');
+ expect(cell.querySelector('img')).toBeNull();
+ expect(cell.querySelector('[onclick]')).toBeNull();
+ // The hostile content is escaped as inert anchor text, not nested HTML
+ expect(cell.textContent).toContain('Test
Class.java');
+ for (const element of cell.querySelectorAll('*')) {
+ expect(element.tagName).toBe('A');
+ for (const attribute of element.attributes) {
+ expect(['href', 'target', 'rel']).toContain(attribute.name);
+ }
+ }
+ });
+
+ it('encodes disharmony cell path segments and tolerates a missing repoUrl trailing slash', () => {
+ const data = reportWithClassCell({
+ content: 'C#Foo.java',
+ path: 'src/main/java/C#Foo.java',
+ align: 'left'
+ });
+ data.project.repoUrl = 'https://github.com/demo/repo';
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="disharmony-GOD"] tbody td.rf-text-left');
+ expect(cell.querySelector('a').getAttribute('href'))
+ .toBe('https://github.com/demo/repo/src/main/java/C%23Foo.java');
+ });
+
+ it('renders cells without a path as before', () => {
+ const data = reportWithClassCell({ content: 'TestClass.java', align: 'left' });
+ const html = renderTemplate(template, prepareReportData(data));
+ const doc = new JSDOM(html).window.document;
+ const cell = doc.querySelector('table[data-rf-table="disharmony-GOD"] tbody td.rf-text-left');
+ expect(cell.querySelector('a')).toBeNull();
+ expect(cell.textContent).toBe('TestClass.java');
+ });
+});
+
+// ---------------------------------------------------------------------------
+// Largest cycle breakdown source-link cells: the report JSON carries the
+// simple class name, the source path relative to the project root and the
+// removal marker; the rendering layer combines the path with project.repoUrl
+// and sanitizes the anchor before it reaches the template.
+// ---------------------------------------------------------------------------
+
+describe('largest cycle breakdown source-link cell rendering', () => {
+ const template = readFileSync(
+ path.join(import.meta.dir, '../../assets/refactor-first-report.mustache'), 'utf8'
+ );
+
+ /**
+ * Builds a report whose largest cycle breakdown holds the supplied rows.
+ * @param {Array