public static IntegerLinkedList sum(IntegerLinkedList integerLinkedList1, IntegerLinkedList integerLinkedList2) {
        Node<Integer> node1 = integerLinkedList1.head();
        Node<Integer> node2 = integerLinkedList2.head();
        boolean get1 = node1 != null;
        boolean get2 = node2 != null;
        IntegerLinkedList sum = null;
        int remainder = 0;
        boolean calculate = get1 || get2;
        while (calculate) {
            int currentSum = remainder;
            if (get1) {
                currentSum += node1.value();
            }
            if (get2) {
                currentSum += node2.value();
            }
            int sumDigit = currentSum % 10;
            if (sum == null) {
                sum = new IntegerLinkedList(sumDigit);
            } else {
                sum.append(sumDigit);
            }
            remainder = currentSum / 10;
            node1 = get1 ? node1.next() : null;
            node2 = get2 ? node2.next() : null;
            get1 = node1 != null;
            get2 = node2 != null;
            calculate = get1 || get2 || remainder > 0;
        }
        return sum;
    }