class ImportMatrixProcess extends AbstractImportProcess {

    public ImportMatrixProcess(SpreadsheetGeneralConfiguration generalConfig, ContainerLoader container,
                               ProgressTicket progressTicket, SheetParser parser) {
        super(generalConfig, container, progressTicket, parser);
    }

    @Override
    public boolean execute() {<FILL_FUNCTION_BODY>}

    @Override
    protected void addColumn(String name, Class type) {
        //NOOP
    }

}

        container.setFillLabelWithId(true);
        Progress.start(progressTicket);

        List<String> targetLabels = new ArrayList<>();
        List<String> sourceLabels = new ArrayList<>();

        boolean firstRow = true;
        int rowCount = 0;

        for (SheetRow row : parser) {
            if (firstRow) {
                //Start at 1, ignoring first value:
                for (int i = 1; i < row.size(); i++) {
                    String label = row.get(i);
                    targetLabels.add(label);

                    if (label == null) {
                        logError(getMessage("ImportMatrixProcess.error.missingTarget", i));
                    }
                }

                firstRow = false;
            } else {
                if (row.size() > 0) {
                    String source = row.get(0);
                    sourceLabels.add(source);

                    if (source != null) {
                        for (int i = 1; i < row.size(); i++) {
                            int labelIndex = i - 1;
                            if (labelIndex < targetLabels.size()) {
                                String value = row.get(i);
                                String target = targetLabels.get(labelIndex);

                                if (target != null) {
                                    try {
                                        if (value != null && !value.trim().equals("0")) {
                                            float weight = Float.parseFloat(value.replace(',', '.'));

                                            if (weight != 0) {
                                                addEdge(source.trim(), target.trim(), weight);
                                            }
                                        }
                                    } catch (NumberFormatException ex) {
                                        logError(getMessage("ImportMatrixProcess.error.parseWeightError", value));
                                    }
                                }
                            } else {
                                logError(getMessage("ImportMatrixProcess.error.invalidRowLength", row.size() - 1,
                                    targetLabels.size()));
                                break;
                            }
                        }
                    } else {
                        logError(getMessage("ImportMatrixProcess.error.missingSource"));
                    }
                }

                rowCount++;
            }
        }

        if (rowCount != targetLabels.size()) {
            logWarning(
                getMessage("ImportMatrixProcess.warning.inconsistentNumberOfLines", rowCount, targetLabels.size()));
        } else if (!sourceLabels.equals(targetLabels)) {
            logWarning(getMessage("ImportMatrixProcess.warning.inconsistentLabels"));
        }

        Progress.finish(progressTicket);
        return !cancel;
    
<methods>public void <init>(org.gephi.io.importer.plugin.file.spreadsheet.process.SpreadsheetGeneralConfiguration, org.gephi.io.importer.api.ContainerLoader, org.gephi.utils.progress.ProgressTicket, org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetParser) ,public boolean cancel() ,public void close() throws java.io.IOException,public abstract boolean execute() ,public org.gephi.io.importer.api.Report getReport() <variables>protected boolean cancel,protected final non-sealed org.gephi.io.importer.api.ContainerLoader container,protected final non-sealed org.gephi.io.importer.plugin.file.spreadsheet.process.SpreadsheetGeneralConfiguration generalConfig,protected final Map<java.lang.String,Class#RAW> headersClassMap,protected final Map<java.lang.String,java.lang.Integer> headersIndexMap,protected final non-sealed org.gephi.io.importer.plugin.file.spreadsheet.sheet.SheetParser parser,protected final non-sealed org.gephi.utils.progress.ProgressTicket progressTicket,protected final non-sealed org.gephi.io.importer.api.Report report,protected final Map<java.lang.String,java.lang.Integer> specialColumnsIndexMap