ModuleDepInfo implements Serializable { public Collection<String> getHasPluginPrefixes() { return getHasPluginPrefixes(null); } ModuleDepInfo();  ModuleDepInfo(ModuleDepInfo other);  ModuleDepInfo(ModuleDepInfo other, String comment);  ModuleDepInfo(String pluginName, BooleanTerm term, String comment);  ModuleDepInfo(String pluginName, BooleanTerm term, String comment, boolean isPluginNameDeclared); Collection<String> getHasPluginPrefixes(); Collection<String> getHasPluginPrefixes(Map<?, ?> formulaCache); Boolean getIncludeStatus(); boolean containsTerm(BooleanTerm term); ModuleDepInfo andWith(ModuleDepInfo other); String getComment(); boolean add(ModuleDepInfo other); boolean subtract(ModuleDepInfo toSub); void resolveWith(Features features); void resolveWith(Features features, boolean coerceUndefinedToFalse); ModuleDepInfo simplify(Map<?, ?> formulaCache); @Override String toString(); @Override boolean equals(Object otherObj); @Override int hashCode();  }
@Test public void testGetHasPluginPrefixes() { ModuleDepInfo depInfo = new ModuleDepInfo("has", new BooleanTerm("B"), null); depInfo.add(new ModuleDepInfo("has", new BooleanTerm("A*C"), null)); depInfo.add(new ModuleDepInfo("has", new BooleanTerm("(!A*!C)"), null)); Collection<String> plugins = depInfo.getHasPluginPrefixes(); System.out.println(plugins); Assert.assertEquals( new HashSet<String>(Arrays.asList(new String[]{"has!B?", "has!A?C?", "has!A?:C?:"})), plugins); depInfo = new ModuleDepInfo("has", new BooleanTerm("!A*A"), null); depInfo.add(new ModuleDepInfo("has", new BooleanTerm("B*!B"), null)); Assert.assertEquals(0, depInfo.getHasPluginPrefixes().size()); depInfo = new ModuleDepInfo("has", new BooleanTerm("!A"), null); depInfo.add(new ModuleDepInfo("has", new BooleanTerm("A"), null)); System.out.println(depInfo.getHasPluginPrefixes()); Assert.assertNull(depInfo.getHasPluginPrefixes()); }