class SubstructureFingerprinter extends AbstractFingerprinter implements IFingerprinter {

    @Override
    public IBitFingerprint getBitFingerprint(IAtomContainer atomContainer) throws CDKException {
        if (keys.isEmpty()) {
            throw new CDKException("No substructures were defined");
        }

        SmartsPattern.prepare(atomContainer);
        BitSet fingerPrint = new BitSet(keys.size());
        for (int i = 0; i < keys.size(); i++) {
            if (keys.get(i).pattern.matches(atomContainer))
                fingerPrint.set(i, true);
        }
        return new BitSetFingerprint(fingerPrint);
    }

    public  SubstructureFingerprinter(String[] smarts);
    public  SubstructureFingerprinter();

}