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