class RedirectionSource implements InjectionSource {

    private static final String UNVALIDATED_REDIRECT_TYPE = "UNVALIDATED_REDIRECT";

    @Override
    public InjectionPoint getInjectableParameters(InvokeInstruction ins, ConstantPoolGen cpg, InstructionHandle insHandle) {<FILL_FUNCTION_BODY>}
}

        if (ins instanceof INVOKEINTERFACE) {
            String methodName = ins.getMethodName(cpg);
            String className = ins.getReferenceType(cpg).toString();
            if (className.equals("javax.servlet.http.HttpServletResponse")
                    || className.equals("javax.servlet.http.HttpServletResponseWrapper")) {
                if (methodName.equals("sendRedirect")) {
                    InjectionPoint ip = new InjectionPoint(new int[]{0}, UNVALIDATED_REDIRECT_TYPE);
                    //ip.setInjectableMethod(className.concat(".sendRedirect(...)"));
//                    ip.setInjectableMethod(ins.getSignature(cpg));
                    return ip;
                } else if (methodName.equals("addHeader") || methodName.equals("setHeader")) {
                    LDC ldc = ByteCode.getPrevInstruction(insHandle, LDC.class);
                    if (ldc != null) {
                        Object value = ldc.getValue(cpg);
                        if (value != null && "Location".equalsIgnoreCase((String) value)) {
                            InjectionPoint ip = new InjectionPoint(new int[]{0}, UNVALIDATED_REDIRECT_TYPE);
                            //ip.setInjectableMethod(className + "." + methodName + "(\"Location\", ...)");
//                            ip.setInjectableMethod(ins.getSignature(cpg));
                            return ip;
                        }
                    }
                }
            }
        }
        return InjectionPoint.NONE;
    
<no_super_class>