public FileMode getIndexFileMode(DirCacheIterator indexIter) {final FileMode wtMode = getEntryFileMode();if (indexIter == null) {return wtMode;}final FileMode iMode = indexIter.getEntryFileMode();if (getOptions().isFileMode() && iMode != FileMode.GITLINK && iMode != FileMode.TREE) {return wtMode;}if (!getOptions().isFileMode()) {if (FileMode.REGULAR_FILE == wtMode&& FileMode.EXECUTABLE_FILE == iMode) {return iMode;}if (FileMode.EXECUTABLE_FILE == wtMode&& FileMode.REGULAR_FILE == iMode) {return iMode;}}if (FileMode.GITLINK == iMode&& FileMode.TREE == wtMode && !getOptions().isDirNoGitLinks()) {return iMode;}if (FileMode.TREE == iMode&& FileMode.GITLINK == wtMode) {return iMode;}return wtMode;}

public virtual FileMode GetIndexFileMode(DirCacheIterator indexIter){FileMode wtMode = EntryFileMode;if (indexIter == null){return wtMode;}if (GetOptions().IsFileMode()){return wtMode;}FileMode iMode = indexIter.EntryFileMode;if (FileMode.REGULAR_FILE == wtMode && FileMode.EXECUTABLE_FILE == iMode){return iMode;}if (FileMode.EXECUTABLE_FILE == wtMode && FileMode.REGULAR_FILE == iMode){return iMode;}return wtMode;}
