### Question:
BatchPluginResource implements DownloadableResource, PluginResource, BatchResource { @Override public boolean equals(final Object o) { if (this == o) { return true; } if ((o == null) || (getClass() != o.getClass())) { return false; } final BatchPluginResource that = (BatchPluginResource) o; if (moduleCompleteKey != null ? !moduleCompleteKey.equals(that.moduleCompleteKey) : that.moduleCompleteKey != null) { return false; } if (params != null ? !params.equals(that.params) : that.params != null) { return false; } if (type != null ? !type.equals(that.type) : that.type != null) { return false; } return true; } BatchPluginResource(final String moduleCompleteKey, final String type, final Map<String, String> params); private  BatchPluginResource(final String resourceName, final String moduleCompleteKey, final String type, final Map<String, String> params); boolean isEmpty(); void add(final DownloadableResource resource); boolean isResourceModified(final HttpServletRequest request, final HttpServletResponse response); void serveResource(final HttpServletRequest request, final HttpServletResponse response); void streamResource(final OutputStream out); String getContentType(); static BatchPluginResource parse(String url, final Map<String, String> queryParams); static boolean matches(final String url); String getUrl(); String getResourceName(); Map<String, String> getParams(); String getVersion(WebResourceIntegration integration); String getModuleCompleteKey(); boolean isCacheSupported(); String getType(); @Override boolean equals(final Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testEquals() { final String moduleKey = "test.plugin:webresources"; final String type = "js"; final Map<String, String> params1 = new TreeMap<String, String>(); params1.put("key", "value"); params1.put("foo", "bar"); final BatchPluginResource batch1 = new BatchPluginResource(moduleKey, type, params1); final Map<String, String> params2 = new TreeMap<String, String>(); params2.put("key", "value"); params2.put("foo", "bar"); final BatchPluginResource batch2 = new BatchPluginResource(moduleKey, type, params2); final Map<String, String> params3 = new TreeMap<String, String>(); params3.put("key", "value"); params3.put("foo", "bart"); final BatchPluginResource batch3 = new BatchPluginResource(moduleKey, type, params3); assertEquals(batch1, batch2); assertNotSame(batch1, batch3); }