public void run() { final EdgeData data = Metric.fetch(metric); final EdgeMaxVisitor max = new EdgeMaxVisitor(); data.visitNonDef(max); if (!max.isMaxSet() || max.getMax() == 0) { target.setValue(data); return; } final EdgeData result = EdgeDataFactory.sparse(data.isSymmetric(), data.getDefElem(), data.getSize()); data.visitNonDef(new ThresholdVisitor(minToMaxRatio, minAbsValue, max.getMax(), result)); target.setValue(result); }