private int getLastChildLine(FSTDirective directive, int lastLine) { for (FSTDirective child : directive.getChildren()) { int childEnd = child.getEndLine(); if (child.getEndLength() > 0) { childEnd++; } lastLine = Math.max(childEnd, lastLine); lastLine = Math.max(getLastChildLine(child, lastLine), lastLine); } return lastLine; }
private boolean hasChildAtLine(FSTDirective directive, int line, boolean hasValidColor) { for (FSTDirective child : directive.getChildren()) { int start = child.getStartLine(); int end = child.getEndLine(); if (line >= start && line <= end && (!hasValidColor || child.getColor() != FeatureColor.NO_COLOR.getValue())) { return true; } if (hasChildAtLine(child, line, hasValidColor)) { return true; } } return false; }