BaseLanguageModule implements Language { @Override public int hashCode() { return name.hashCode(); } @Deprecated  BaseLanguageModule(String name, String shortName, String terseName, Class<?> ruleChainVisitorClass,
            String... extensions);  BaseLanguageModule(String name,
                              String shortName,
                              String terseName,
                              String firstExtension,
                              String... otherExtensions); @Override String getName(); @Override String getShortName(); @Override String getTerseName(); @Override Class<?> getRuleChainVisitorClass(); @Override List<String> getExtensions(); @Override boolean hasExtension(String extension); @Override List<LanguageVersion> getVersions(); @Override boolean hasVersion(String version); @Override LanguageVersion getVersion(String versionName); @Override LanguageVersion getDefaultVersion(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj); @Override int compareTo(Language o);  }
@Test public void testHashCodeEquals() { Language l1 = new DummyLanguageModule(); Language l1a = new DummyLanguageModule(); Language l2 = new Dummy2LanguageModule(); Assert.assertEquals(l1.hashCode(), l1a.hashCode()); Assert.assertNotEquals(l1.hashCode(), l2.hashCode()); Assert.assertEquals(l1, l1a); Assert.assertNotEquals(l1, l2); }