docs: protected <JavaTypeT> TypeCodec<JavaTypeT> codecFor(
        DataType cqlType, GenericType<JavaTypeT> javaType, boolean isJavaCovariant) {
      LOG.trace("[{}] Looking up codec for {} <-> {}", logPrefix, cqlType, javaType);
      TypeCodec<?> primitiveCodec = primitiveCodecsByCode.get(cqlType.getProtocolCode());
      if (primitiveCodec != null && matches(primitiveCodec, javaType, isJavaCovariant)) {
        LOG.trace("[{}] Found matching primitive codec {}", logPrefix, primitiveCodec);
        return uncheckedCast(primitiveCodec);
      }
      for (TypeCodec<?> userCodec : userCodecs) {
        if (userCodec.accepts(cqlType) && matches(userCodec, javaType, isJavaCovariant)) {
          LOG.trace("[{}] Found matching user codec {}", logPrefix, userCodec);
          return uncheckedCast(userCodec);
        }
      }
      return uncheckedCast(getCachedCodec(cqlType, javaType, isJavaCovariant));
    }