private void addAllSubsInFile(
      CompletionParameters parameters, CompletionResultSet resultSet, boolean limitResults) {
    ArrayList<Package> packageList =
        ModulesContainer.getPackageListFromFile(
            parameters.getOriginalFile().getVirtualFile().getCanonicalPath());

    for (int i = 0; i < packageList.size(); i++) {
      ArrayList<Sub> subs = packageList.get(i).getAllSubs();
      int amount =
          (false)
              ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, subs.size())
              : subs.size(); // get all results only if users press ctrl+space
      for (int j = 0; j < amount; j++) {
        addCachedSub(resultSet, subs.get(j));
      }
      ArrayList<ImportedSub> importedSubs = packageList.get(i).getImportedSubs();
      amount =
          (false)
              ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, importedSubs.size())
              : importedSubs.size(); // get all results only if users press ctrl+space

      for (int j = 0; j < amount; j++) {
        ArrayList<Package> packages =
            ModulesContainer.getPackageList(
                importedSubs.get(j).getContainingPackage()); // TODO: handle more than 1 package
        if (packages.size() > 0) {
          Sub sub = packages.get(0).getSubByName(importedSubs.get(j).getImportSub());
          if (sub != null) {
            addCachedSub(resultSet, sub);
          }
        }
      }
    }
  }
  private void addAllSubsInPackage(
      CompletionResultSet resultSet,
      PerlElement packageName,
      boolean withArguments,
      boolean limitResults) {
    ArrayList<Package> packageList = ModulesContainer.getPackageList(packageName.getText());

    if (Utils.verbose) {
      Utils.print("Detected Package:" + packageName);
    }
    for (int i = 0; i < packageList.size(); i++) {
      Package packageObj = packageList.get(i);

      ArrayList<Sub> subs = packageObj.getAllSubs();
      int amount =
          (false)
              ? Math.min(AUTO_POPUP_SUBS_ITEMS_LIMIT, subs.size())
              : subs.size(); // get all results only if users press ctrl+space
      for (int j = 0; j < amount; j++) {
        if (withArguments) {
          addCachedSub(resultSet, subs.get(j));
        } else {
          addCachedSubNoArgs(resultSet, subs.get(j));
        }
      }
    }
  }