extensionNames should be a Map interface rather than the implementation IdentityHashMap
Change this line https://github.com/openmrs/openmrs-core/blob/master/api/src/main/java/org/openmrs/module/Module.java#L73 to private Map extensionNames = new IdentityHashMap (); And also change this https://github.com/openmrs/openmrs-core/blob/master/api/src/main/java/org/openmrs/module/Module.java#L515 to public void setExtensionNames(Map map) { Background Information: Declarations should use Java collection interfaces such as "List" rather than specific implementation classes such as "LinkedList"
The purpose of the Java Collections API is to provide a well defined hierarchy of interfaces in order to hide implementation details. Implementing classes must be used to instantiate new collections, but the result of an instantiation should ideally be stored in a variable whose type is a Java Collection interface. This rule raises an issue when an implementation class: is returned from a public method. is accepted as an argument to a public method. is exposed as a public member.