code: public T decoder(Decoder d) {
          if (!decoders.contains(d)) {
              decoders.add(d);
          }
          return derived.cast(this);
      }
docs: Add a {@link Decoder}. Several Decoder can be added and will be invoked the order they were added. This method doesn't allow
  duplicate.
  @param d a {@link Decoder}
  @return this