1) If one class appears to be extending the other with the defined method, the method itself might be overridden and get the same name in the final list or arguments.
2) Any method you’re trying to define within the base class shall stay visible. If it will not be this way, the method while being derived might not be considered overridden version. Sometimes it may be even treated the way the normal method usually is.
3) If you’re working with the name of method and arguments list, you shall perform the same for overriding and overridden methods. When you come to the return type, do not hesitate to use the co-variant. In case the return method reached the super-class and appeared to be Map, the return one shall be HashMap.