class SMILESReader extends DefaultChemObjectReader {

    @Override
    public <T extends IChemObject> T read(T object) throws CDKException {
        sp = new SmilesParser(object.getBuilder());

        if (object instanceof IAtomContainerSet) {
            return (T) readAtomContainerSet((IAtomContainerSet) object);
        } else if (object instanceof IChemFile) {
            IChemFile file = (IChemFile) object;
            IChemSequence sequence = file.getBuilder().newInstance(IChemSequence.class);
            IChemModel chemModel = file.getBuilder().newInstance(IChemModel.class);
            chemModel.setMoleculeSet(readAtomContainerSet(file.getBuilder().newInstance(IAtomContainerSet.class)));
            sequence.addChemModel(chemModel);
            file.addChemSequence(sequence);
            return (T) file;
        } else {
            throw new CDKException("Only supported is reading of MoleculeSet objects.");
        }
    }

    public  SMILESReader(Reader input);
    public  SMILESReader(InputStream input);
    public  SMILESReader();

}