code: protected boolean mayPerformRename(final Either<Range, PrepareRenameResult> prepareRenameResult, final RenameParams renameParams) {
      return (((prepareRenameResult != null) && (prepareRenameResult.getLeft() != null)) && 
        Ranges.containsPosition(prepareRenameResult.getLeft(), renameParams.getPosition()));
    }
docs: If this method returns {@code false}, it is sure, that the rename operation will fail.
  There is no guarantee that it will succeed even if it returns {@code true}.