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));
        }
      }
    }
  }
 private static void addCachedVariables(CompletionResultSet resultSet, String str) {
   if (str != null && !variablesCache.containsKey(str)) {
     if (Utils.verbose) {
       Utils.print("cache variable: " + str);
     }
     variablesCache.put(str, getVariableLookupElementBuilder(str));
   }
   if (resultSet != null) {
     resultSet.addElement(variablesCache.get(str));
   }
 }
 private static void addCachedPackage(CompletionResultSet resultSet, Package packageObj) {
   if (packageObj != null && !packagesCache.containsKey(packageObj)) {
     if (Utils.verbose) {
       Utils.print("cache package: " + packageObj.getQualifiedName());
     }
     packagesCache.put(packageObj, getPackageLookupElementBuilder(packageObj));
   }
   if (resultSet != null) {
     resultSet.addElement(packagesCache.get(packageObj));
   }
 }
 public static void initialize() {
   float start = 0;
   if (Utils.verbose) {
     start = System.currentTimeMillis();
   }
   cacheAllPackages();
   cacheAllSubsAndVarsOfOpenedFiles();
   if (Utils.verbose) {
     float end = System.currentTimeMillis();
     Utils.print("performance[intcch]: " + ((end - start) / 1000) + "sec");
   }
 }
 private static void addCachedSubNoArgs(CompletionResultSet resultSet, Sub sub) {
   if (!subsCacheNoArgs.containsKey(sub)) {
     if (Utils.verbose) {
       Utils.print(
           "cache sub(no args): "
               + sub.getName()
               + " , containingPackage:"
               + sub.getPackageObj().getQualifiedName());
     }
     subsCacheNoArgs.put(sub, getSubLookupElementBuilder(sub, false));
   }
   if (resultSet != null) {
     resultSet.addElement(subsCacheNoArgs.get(sub));
   }
 }
 @Override
 public void selectionChanged(FileEditorManagerEvent event) {
   if (Utils.verbose) {
     Utils.print("file changed to:" + event.getNewFile());
   }
 }