public GMSSStateAwareSigner(final Digest digest) { if (!(digest instanceof Memoable)) { throw new IllegalArgumentException("digest must implement Memoable"); } final Memoable dig = ((Memoable)digest).copy(); gmssSigner = new GMSSSigner(new GMSSDigestProvider() { public Digest get() { return (Digest)dig.copy(); } }); }