private void buildReturnCells(IOpenClass spreadsheetHeaderType) throws SyntaxNodeException { SpreadsheetHeaderDefinition headerDefinition = headerDefinitions.get(SpreadsheetSymbols.RETURN_NAME.toString()); if (headerDefinition == null) { return; } int nonEmptyCellsCount = calculateNonEmptyCells(headerDefinition); IOpenClass cellType = deriveSingleCellReturnType(nonEmptyCellsCount, headerDefinition, spreadsheetHeaderType); if (headerDefinition.getType() == null) { headerDefinition.setType(cellType); } else { String message = String .format( "RETURN %s derives it's type from the Spreadsheet return type and therefore must not be defined here", headerDefinition.rowOrColumn()); throw SyntaxNodeExceptionUtils.createError(message, headerDefinition.getVars().get(0).getName()); } returnHeaderDefinition = new ReturnSpreadsheetHeaderDefinition(headerDefinition, spreadsheetHeaderType); headerDefinitions.put(SpreadsheetSymbols.RETURN_NAME.toString(), returnHeaderDefinition); }