docs: protected <JavaTypeT> TypeCodec<JavaTypeT> codecFor(
        GenericType<JavaTypeT> javaType, boolean isJavaCovariant) {
      LOG.trace(
          "[{}] Looking up codec for Java type {} (covariant = {})",
          logPrefix,
          javaType,
          isJavaCovariant);
      for (TypeCodec<?> primitiveCodec : primitiveCodecs) {
        if (matches(primitiveCodec, javaType, isJavaCovariant)) {
          LOG.trace("[{}] Found matching primitive codec {}", logPrefix, primitiveCodec);
          return uncheckedCast(primitiveCodec);
        }
      }
      for (TypeCodec<?> userCodec : userCodecs) {
        if (matches(userCodec, javaType, isJavaCovariant)) {
          LOG.trace("[{}] Found matching user codec {}", logPrefix, userCodec);
          return uncheckedCast(userCodec);
        }
      }
      return uncheckedCast(getCachedCodec(null, javaType, isJavaCovariant));
    }