@Override public ContourAggregates<N> process(Aggregates<? extends N> aggregates, Renderer rend) { Aggregates<? extends N> padAggs = new PadAggregates<>(aggregates, null); Aggregates<Boolean> isoDivided = rend.transfer(padAggs, new ISOBelow<>(threshold)); Aggregates<MC_TYPE> classified = rend.transfer(isoDivided, new MCClassifier()); Shape s = Assembler.assembleContours(classified, isoDivided); GlyphList<Shape, N> contours = new GlyphList<>(); contours.add(new SimpleGlyph<>(s, threshold)); if (!fill) { isoDivided = rend.transfer(isoDivided, new General.Simplify<>(isoDivided.defaultValue())); } Aggregates<N> base = rend.transfer( isoDivided, new General.MapWrapper<>(true, threshold, aggregates.defaultValue())); return new ContourAggregates<>(base, contours); }