public IpnbCell createCell() { final IpnbCell cell; if (cell_type.equals("markdown")) { cell = new IpnbMarkdownCell(source, metadata); } else if (cell_type.equals("code")) { final List<IpnbOutputCell> outputCells = new ArrayList<IpnbOutputCell>(); for (CellOutputRaw outputRaw : outputs) { outputCells.add(outputRaw.createOutput()); } final Integer prompt = prompt_number != null ? prompt_number : execution_count; cell = new IpnbCodeCell( language == null ? "python" : language, input == null ? source : input, prompt, outputCells, metadata); } else if (cell_type.equals("raw")) { cell = new IpnbRawCell(source); } else if (cell_type.equals("heading")) { cell = new IpnbHeadingCell(source, level, metadata); } else { cell = null; } return cell; }