class CustomInjectionDetector extends BasicInjectionDetector {

    private static final Logger LOG = Logger.getLogger(CustomInjectionDetector.class.getName());

    private static final String SYSTEM_PROPERTY = "findsecbugs.injection.sources";

    public CustomInjectionDetector(BugReporter bugReporter) {
        super(bugReporter);

        List<URL> urls = getSystemProperty();

        if (urls.size() > 0) {
            LOG.info("Loading additional injection sources from " + Arrays.toString(urls.toArray()) + "");
        }

        for(URL url : urls) {
            try {
                InputStream in = url.openStream();
                loadConfiguredSinks(in, "CUSTOM_INJECTION");
            } catch (IOException e) {
                LOG.log(Level.SEVERE, "Unable to load injection sources from :" + url.toString(), e);
            }
        }

    }

    @Override
    protected int getPriority(Taint taint) {<FILL_FUNCTION_BODY>}

    private List<URL> getSystemProperty() {
        String propertyValue = FindSecBugsGlobalConfig.getInstance().loadFromSystem(SYSTEM_PROPERTY, "");
        if(propertyValue.equals("")) {
            return new ArrayList<URL>();
        }
        String[] resourcePaths = propertyValue.split(",");
        List<URL> urls = new ArrayList<URL>(resourcePaths.length);
        for (String resourcePath : resourcePaths) {
            File file = new File(resourcePath);
            if (file.exists()) {
                try {
                    urls.add(file.toURI().toURL());
                } catch (MalformedURLException e) {
                    LOG.log(Level.SEVERE, file + " did not load.", e); //Unlikely if the file exists
                }
            }
            else {
                URL url = getClass().getResource(resourcePath);
                if(url != null) {
                    urls.add(url);
                }
            }
        }

        return urls;
    }


}

        if (!taint.isSafe() && taint.hasTag(Taint.Tag.CUSTOM_INJECTION_SAFE)) {
            return Priorities.IGNORE_PRIORITY;
        } else {
            return super.getPriority(taint);
        }
    
<methods>public void registerVisitor(com.h3xstream.findsecbugs.taintanalysis.TaintFrameAdditionalVisitor) <variables>static com.h3xstream.findsecbugs.injection.ClassMethodSignature OBJECT,private static final com.h3xstream.findsecbugs.injection.SinksLoader SINKS_LOADER,private final Map<com.h3xstream.findsecbugs.injection.ClassMethodSignature,com.h3xstream.findsecbugs.injection.InjectionPoint> injectionMap