class PureSubSingleStatistic<Solution_, StatisticPoint_ extends StatisticPoint>
        extends SubSingleStatistic<Solution_, StatisticPoint_> {

    protected SingleStatisticType singleStatisticType;

    protected PureSubSingleStatistic() {
        // For JAXB.
    }

    protected PureSubSingleStatistic(SubSingleBenchmarkResult subSingleBenchmarkResult,
            SingleStatisticType singleStatisticType) {
        super(subSingleBenchmarkResult);
        this.singleStatisticType = singleStatisticType;
    }

    @Override
    public SingleStatisticType getStatisticType() {
        return singleStatisticType;
    }

    // ************************************************************************
    // Write methods
    // ************************************************************************

    public abstract void writeGraphFiles(BenchmarkReport benchmarkReport);

    protected File writeChartToImageFile(JFreeChart chart, String fileNameBase) {
        File chartFile = new File(subSingleBenchmarkResult.getResultDirectory(), fileNameBase + ".png");
        GraphSupport.writeChartToImageFile(chart, chartFile);
        return chartFile;
    }

    public File getGraphFile() {<FILL_FUNCTION_BODY>}

    public abstract List<File> getGraphFileList();

    @Override
    public String toString() {
        return subSingleBenchmarkResult + "_" + singleStatisticType;
    }

}

        List<File> graphFileList = getGraphFileList();
        if (graphFileList == null || graphFileList.isEmpty()) {
            return null;
        } else if (graphFileList.size() > 1) {
            throw new IllegalStateException("Cannot get graph file for the PureSubSingleStatistic (" + this
                    + ") because it has more than 1 graph file. See method getGraphList() and "
                    + SingleStatisticType.class.getSimpleName() + ".hasScoreLevels()");
        } else {
            return graphFileList.get(0);
        }
    
<methods>public void close(StatisticRegistry<Solution_>, Tags, Solver<Solution_>) ,public java.lang.String getAnchorId() ,public java.io.File getCsvFile() ,public java.lang.String getCsvFileName() ,public List<StatisticPoint_> getPointList() ,public java.lang.String getRelativeCsvFilePath() ,public abstract org.optaplanner.benchmark.impl.statistic.StatisticType getStatisticType() ,public org.optaplanner.benchmark.impl.result.SubSingleBenchmarkResult getSubSingleBenchmarkResult() ,public void hibernatePointList() ,public void initPointList() ,public abstract void open(StatisticRegistry<Solution_>, Tags, Solver<Solution_>) ,public void setPointList(List<StatisticPoint_>) ,public void setSubSingleBenchmarkResult(org.optaplanner.benchmark.impl.result.SubSingleBenchmarkResult) ,public void unhibernatePointList() <variables>private static final java.lang.String FAILED,protected final transient Logger logger,protected List<StatisticPoint_> pointList,protected org.optaplanner.benchmark.impl.result.SubSingleBenchmarkResult subSingleBenchmarkResult