      "        value += second_node.data if second_node is not None else 0\n",
      "        remainder = value % 10\n",
      "        new_carry = 1 if value >= 10 else 0\n",
      "        node = Node(remainder)\n",
      "        node.next = self.__add__(first_node.next if first_node is not None else None, \n",
      "                                 second_node.next if first_node is not None else None, \n",
      "                                 new_carry)\n",
      "        return node\n",
      "\n",
      "    def add(self, first_list, second_list):\n",
      "        if first_list is None or second_list is None:\n",
      "            return None\n",
 
</s> remove     "    def add(self, first_list, second_list):\n",
 </s> add     "    def add_reverse(self, first_list, second_list):\n", </s> remove     "        head = self.__add__(first_list.head, second_list.head, 0)\n",
 </s> add     "        head = self.__add_reverse__(first_list.head, second_list.head, 0)\n", </s> remove     "    def __add__(self, first_node, second_node, carry):\n",
 </s> add     "    def __add_reverse__(self, first_node, second_node, carry):\n", </s> remove     "    def add(self, first_list, second_list):\n",
 </s> add     "    def add_reverse(self, first_list, second_list):\n", </s> remove     "        result = MyLinkedList().add(first_list, second_list)\n",
 </s> add     "        result = MyLinkedList().add_reverse(first_list, second_list)\n",
    "        node.next = self.__add_reverse__(first_node.next if first_node is not None else None, \n",
    "                                     second_node.next if first_node is not None else None, \n",
    "                                     new_carry)\n",
      "        value += second_node.data if second_node is not None else 0\n",
      "        remainder = value % 10\n",
      "        new_carry = 1 if value >= 10 else 0\n",
      "        node = Node(remainder)\n",
    "        node.next = self.__add_reverse__(first_node.next if first_node is not None else None, \n",
    "                                     second_node.next if first_node is not None else None, \n",
    "                                     new_carry)\n",
    "        node.next = self.__add_reverse__(first_node.next if first_node is not None else None, \n",
    "                                     second_node.next if first_node is not None else None, \n",
    "                                     new_carry)\n",
    "        node.next = self.__add_reverse__(first_node.next if first_node is not None else None, \n",
    "                                     second_node.next if first_node is not None else None, \n",
    "                                     new_carry)\n",
      "        return node\n",
      "\n",
      "    def add(self, first_list, second_list):\n",
      "        if first_list is None or second_list is None:\n",
      "            return None\n",
keep keep keep keep replace replace replace keep keep keep keep keep
 Renamed unit test method to be more descriptive. 
linked_lists/add_reverse/add_reverse_solution.ipynb