code: private boolean checkPlugin(final String currentPlugin) {
          final Features pluginFeatures = pluginTable.get(currentPlugin);
          final Iterator<PluginRequirement> iter = pluginFeatures.getRequireListIter();
          // check whether dependcy is satisfied
          while (iter.hasNext()) {
              boolean anyPluginFound = false;
              final PluginRequirement requirement = iter.next();
              final Iterator<String> requiredPluginIter = requirement.getPlugins();
              while (requiredPluginIter.hasNext()) {
                  // Iterate over all alternatives in plugin requirement.
                  final String requiredPlugin = requiredPluginIter.next();
                  if (pluginTable.containsKey(requiredPlugin)) {
                      if (!loadedPlugin.contains(requiredPlugin)) {
                          // required plug-in is not loaded
                          loadPlugin(requiredPlugin);
                      }
                      // As soon as any plugin is found, it's OK.
                      anyPluginFound = true;
                  }
              }
              if (!anyPluginFound && requirement.getRequired()) {
                  // not contain any plugin required by current plugin
                  final String msg = MessageUtils.getMessage("DOTJ020W", requirement.toString(), currentPlugin).toString();
                  throw new RuntimeException(msg);
              }
          }
          return true;
      }
docs: Check whether the plugin can be loaded.
  
  @param currentPlugin plugin ID
  @return {@code true} if plugin can be loaded, otherwise {@code false}