protected abstract void fillInCell(Cell currentCell, Cell cellAbove,
                                    Cell cellToLeft, Cell cellAboveLeft);
        public void printScoreTable()
        {
            ensureTableIsFilledIn();
            for (int i = 0; i < sequence2.Length + 2; i++)
            {
                for (int j = 0; j < sequence1.Length + 2; j++)
                {
                    if (i == 0)
                    {
                        if (j == 0 || j == 1)
                        {
                            Console.Write("  ");
                        }
                        else
                        {
                            if (j == 2)
                            {
                                Console.Write("     ");
                            }
                            else
                            {
                                Console.Write("   ");
                            }
                            Console.Write(sequence1[j - 2]);
                        }
                    }
                    else if (j == 0)
                    {
                        if (i == 1)
                        {
                            Console.Write("  ");
                        }
                        else
                        {
                            Console.Write(" " + sequence2[i - 2]);
                        }
                    }
                    else
                    {
                        String toPrint;
                        Cell   currentCell = scoreTable[i - 1, j - 1];
                        Cell   prevCell    = currentCell.getPrevCell();
                        if (prevCell != null)
                        {
                            if (currentCell.getCol() == prevCell.getCol() + 1 &&
                                currentCell.getRow() == prevCell.getRow() + 1)
                            {
                                toPrint = "\\";
                            }
                            else if (currentCell.getCol() == prevCell.getCol() + 1)
                            {
                                toPrint = "-";
                            }
                            else
                            {
                                toPrint = "|";
                            }
                        }
                        else
                        {
                            toPrint = " ";
                        }
                        int    score = currentCell.getScore();
                        String s     = score.ToString().PadLeft(3, '0');
                        toPrint += s;
                        Console.Write(toPrint);
                    }

                    Console.Write(' ');
                }
                Console.WriteLine();
            }
        }