@Override
 public List<String> getTabCompleteList(int toComplete, String[] start, CommandSender sender) {
   ArrayList<String> result = new ArrayList<>();
   if (toComplete == 2) {
     for (Player player : Utils.getOnlinePlayers()) {
       result.add(player.getName());
     }
   } else if (toComplete == 3) {
     result.addAll(plugin.getFileManager().getRegionNames());
   }
   return result;
 }
 @SuppressWarnings("deprecation")
 @Override
 public void execute(CommandSender sender, String[] args) {
   if (!sender.hasPermission("areashop.delfriend")
       && !sender.hasPermission("areashop.delfriendall")) {
     plugin.message(sender, "delfriend-noPermission");
     return;
   }
   if (args.length < 2) {
     plugin.message(sender, "delfriend-help");
     return;
   }
   GeneralRegion region;
   if (args.length <= 2) {
     if (sender instanceof Player) {
       // get the region by location
       List<GeneralRegion> regions =
           Utils.getAllApplicableRegions(((Player) sender).getLocation());
       if (regions.isEmpty()) {
         plugin.message(sender, "cmd-noRegionsAtLocation");
         return;
       } else if (regions.size() > 1) {
         plugin.message(sender, "cmd-moreRegionsAtLocation");
         return;
       } else {
         region = regions.get(0);
       }
     } else {
       plugin.message(sender, "cmd-automaticRegionOnlyByPlayer");
       return;
     }
   } else {
     region = plugin.getFileManager().getRegion(args[2]);
     if (region == null) {
       plugin.message(sender, "cmd-notRegistered", args[2]);
       return;
     }
   }
   if (sender.hasPermission("areashop.delfriendall")) {
     if ((region.isRentRegion() && !((RentRegion) region).isRented())
         || (region.isBuyRegion() && !((BuyRegion) region).isSold())) {
       plugin.message(sender, "delfriend-noOwner", region);
       return;
     }
     OfflinePlayer friend = Bukkit.getOfflinePlayer(args[1]);
     if (!region.getFriendsFeature().getFriends().contains(friend.getUniqueId())) {
       plugin.message(sender, "delfriend-notAdded", friend.getName(), region);
       return;
     }
     if (region.getFriendsFeature().deleteFriend(friend.getUniqueId(), sender)) {
       region.update();
       plugin.message(sender, "delfriend-successOther", friend.getName(), region);
     }
   } else {
     if (sender.hasPermission("areashop.delfriend") && sender instanceof Player) {
       if (region.isOwner((Player) sender)) {
         OfflinePlayer friend = Bukkit.getOfflinePlayer(args[1]);
         if (!region.getFriendsFeature().getFriends().contains(friend.getUniqueId())) {
           plugin.message(sender, "delfriend-notAdded", friend.getName(), region);
           return;
         }
         if (region.getFriendsFeature().deleteFriend(friend.getUniqueId(), sender)) {
           region.update();
           plugin.message(sender, "delfriend-success", friend.getName(), region);
         }
       } else {
         plugin.message(sender, "delfriend-noPermissionOther", region);
       }
     } else {
       plugin.message(sender, "delfriend-noPermission", region);
     }
   }
 }