code: public HashGeneratorMaker encode(AtomEncoder encoder) {
          if (encoder == null) throw new NullPointerException("no encoder provided");
          customEncoders.add(encoder);
          return this;
      }
docs: Add a custom encoder to the hash generator which will be built. Although
  not enforced, the encoder should be stateless and should not modify any
  passed inputs.
  
  @param encoder an atom encoder
  @return fluent API reference (self)
  @throws NullPointerException no encoder provided