Подскажите, пожалуйста, что не так
package com.javarush.task.task19.task1918;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Scanner;
//import java.util.SortedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Знакомство с тегами
*/
public class Solution {
static String tag;
public static void main(String[] args)throws IOException {
BufferedReader cmd = new BufferedReader(new InputStreamReader(System.in));
FileReader fromFile = new FileReader(cmd.readLine());
tag = args[0];
String allSymbols = "";
while(fromFile.ready()){
allSymbols+= (char)fromFile.read();
}
printInnerTags(allSymbols);
cmd.close();
fromFile.close();
}
private static void printInnerTags(String currentTag){
Matcher openMatcher = Pattern.compile("<"+tag+".*>").matcher(currentTag);
Matcher closingMatcher = Pattern.compile("<\\/"+tag+">").matcher(currentTag);
List<Integer> openings = new ArrayList<>();
List<Integer> closings = new ArrayList<>();
while(openMatcher.find()){
openings.add(openMatcher.start());
}
int mainStart =0;
while(closingMatcher.find()){
closings.add(closingMatcher.end());
}
int tagCount=0;
int openTotal=0;
for(int i= 0; i<currentTag.length(); i++){
if(openings.contains(i)){
if(openTotal==0)
{
mainStart=i;
}
tagCount++;
openTotal++;
}else if(closings.contains(i)){
tagCount--;
}
if(tagCount==0&&openTotal>0){
System.out.println(currentTag.substring(mainStart, i+1));
printInnerTags(currentTag.substring(mainStart+1, i));
openTotal=0;
}
}
}
}