boolean (FileType val1, FileType val2) { if (val1 instanceof SubstitutedFileType) val1 = ((SubstitutedFileType)val1).getFileType(); if (val2 instanceof SubstitutedFileType) val2 = ((SubstitutedFileType)val2).getFileType(); if (val1 instanceof OutDatedFileType || val2 instanceof OutDatedFileType) { return Objects.equals(val1.getName(), val2.getName()); } return Comparing.equal(val1, val2); }