class HardcodePasswordInMapDetector extends AbstractHardcodePasswordInMapDetector {

    private static final String HARD_CODE_PASSWORD_TYPE = "HARD_CODE_PASSWORD";

    private static final InvokeMatcherBuilder MAP_PUT_METHOD = invokeInstruction().atMethod("put")
            .withArgs("(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    private static final InvokeMatcherBuilder MAP_PUT_IF_ABSENT_METHOD = invokeInstruction().atMethod("putIfAbsent")
            .withArgs("(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    private static final InvokeMatcherBuilder HASHTABLE_SET_PROPERTY = invokeInstruction().atMethod("setProperty")
            .withArgs("(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;");

    public HardcodePasswordInMapDetector(BugReporter bugReporter) {
        super(bugReporter);
    }

    @Override
    protected InjectionPoint getInjectionPoint(InvokeInstruction invoke, ConstantPoolGen cpg,
                                               InstructionHandle handle) {<FILL_FUNCTION_BODY>}
}

        assert invoke != null && cpg != null;

        if (MAP_PUT_METHOD.matches(invoke, cpg)
                || MAP_PUT_IF_ABSENT_METHOD.matches(invoke, cpg)
                || HASHTABLE_SET_PROPERTY.matches(invoke, cpg)) {
            return new InjectionPoint(new int[]{0}, HARD_CODE_PASSWORD_TYPE);
        }
        return InjectionPoint.NONE;
    
<methods>public void <init>(BugReporter) <variables>private static List<java.lang.String> PASSWORD_WORDS