Привет всем ! Прошелся по кейсам в предыдущих вопросах по этой задаче, вроде работает. Но валидатор ругается.
package com.javarush.task.task19.task1916;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/*
Отслеживаем изменения
*/

public class Solution {
    public static List<LineItem> lines = new ArrayList<LineItem>();

    public static void main(String[] args) throws IOException {
        String file1;
        String file2;
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
//            file1 = "C:\\Users\\gasparianvd\\Desktop\\Test1.txt";
//            file2 = "C:\\Users\\gasparianvd\\Desktop\\Test2.txt";
            file1 = reader.readLine();
            file2 = reader.readLine();
        }
        ArrayList<String> fileList1;
        ArrayList<String> fileList2;
        try (BufferedReader fileReader1 = new BufferedReader(new FileReader(file1));
             BufferedReader fileReader2 = new BufferedReader(new FileReader(file2))) {
            fileList1 = new ArrayList<>();
            fileList2 = new ArrayList<>();
            while (fileReader1.ready()) {
                fileList1.add(fileReader1.readLine());
            }
            while (fileReader2.ready()) {
                fileList2.add(fileReader2.readLine());
            }
        }

        while (!fileList1.isEmpty() || !fileList2.isEmpty()) {
            if (fileList1.get(0).equals(fileList2.get(0))) {
                lines.add(new LineItem(Type.SAME, fileList1.get(0)));
                fileList1.remove(0);
                fileList2.remove(0);
            } else if (fileList2.size() >= 2 && fileList1.get(0).equals(fileList2.get(1))) {
                lines.add(new LineItem(Type.ADDED, fileList2.get(0)));
                fileList2.remove(0);
            } else if (fileList1.size() >= 2 && fileList1.get(1).equals(fileList2.get(0))) {
                lines.add(new LineItem(Type.REMOVED, fileList1.get(0)));
                fileList1.remove(0);

            }
        }
        if (!fileList1.isEmpty()) {
            for (String s : fileList1) {
                lines.add(new LineItem(Type.REMOVED, s));
            }
        }
        if (!fileList2.isEmpty()) {
            for (String s : fileList2) {
                lines.add(new LineItem(Type.ADDED, s));
            }
        }
//        for (LineItem l : lines) {
//            System.out.println(l.type + " " + l.line);
//        }
    }


    public static enum Type {
        ADDED,        //добавлена новая строка
        REMOVED,      //удалена строка
        SAME          //без изменений
    }

    public static class LineItem {
        public Type type;
        public String line;

        public LineItem(Type type, String line) {
            this.type = type;
            this.line = line;
        }
    }
}