HashGeneratorMaker { public AtomHashGenerator atomic() { if (depth < 0) throw new IllegalArgumentException("no depth specified, use .depth(int)"); List<AtomEncoder> encoders = new ArrayList<AtomEncoder>(); for (AtomEncoder encoder : encoderSet) { encoders.add(encoder); } encoders.addAll(this.customEncoders); boolean suppress = suppression != AtomSuppression.unsuppressed(); AtomEncoder encoder = new ConjugatedAtomEncoder(encoders); SeedGenerator seeds = new SeedGenerator(encoder, suppression); AbstractAtomHashGenerator simple = suppress ? new SuppressedAtomHashGenerator(seeds, new Xorshift(), makeStereoEncoderFactory(), suppression, depth) : new BasicAtomHashGenerator(seeds, new Xorshift(), makeStereoEncoderFactory(), depth); if (equivSetFinder != null) { return new PerturbedAtomHashGenerator(seeds, simple, new Xorshift(), makeStereoEncoderFactory(), equivSetFinder, suppression); } else { return simple; } }  HashGeneratorMaker depth(int depth); HashGeneratorMaker elemental(); HashGeneratorMaker isotopic(); HashGeneratorMaker charged(); HashGeneratorMaker orbital(); HashGeneratorMaker radical(); HashGeneratorMaker chiral(); HashGeneratorMaker suppressHydrogens(); HashGeneratorMaker perturbed(); HashGeneratorMaker encode(AtomEncoder encoder); EnsembleHashGenerator ensemble(); MoleculeHashGenerator molecular(); AtomHashGenerator atomic();  }
@Test(expected = IllegalArgumentException.class) public void testNoDepth() { new HashGeneratorMaker().atomic(); }
@Test public void testAtomic() { assertNotNull(new HashGeneratorMaker().depth(0).elemental().atomic()); }