public MetadataDiff compareMetadata(DirCacheEntry entry) {if (entry.isAssumeValid())return MetadataDiff.EQUAL;if (entry.isUpdateNeeded())return MetadataDiff.DIFFER_BY_METADATA;if (isModeDifferent(entry.getRawMode()))return MetadataDiff.DIFFER_BY_METADATA;int type = mode & FileMode.TYPE_MASK;if (type == FileMode.TYPE_TREE || type == FileMode.TYPE_GITLINK)return MetadataDiff.EQUAL;if (!entry.isSmudged() && entry.getLength() != (int) getEntryLength())return MetadataDiff.DIFFER_BY_METADATA;Instant cacheLastModified = entry.getLastModifiedInstant();Instant fileLastModified = getEntryLastModifiedInstant();if (timestampComparator.compare(cacheLastModified, fileLastModified,getOptions().getCheckStat() == CheckStat.MINIMAL) != 0) {return MetadataDiff.DIFFER_BY_TIMESTAMP;}if (entry.isSmudged()) {return MetadataDiff.SMUDGED;}return MetadataDiff.EQUAL;}