public TypeEncoding<DescribedType> getEncoding(final DescribedType val) {
    TypeEncoding underlyingEncoding =
        _encoder.getType(val.getDescribed()).getEncoding(val.getDescribed());
    TypeEncoding encoding = _encodings.get(underlyingEncoding);
    if (encoding == null) {
      encoding = new DynamicDescribedTypeEncoding(underlyingEncoding);
      _encodings.put(underlyingEncoding, encoding);
    }

    return encoding;
  }