docs: private static String genCodeForKeyAccess(
        String containerExpr,
        PyExpr key,
        NotFoundBehavior notFoundBehavior,
        CoerceKeyToString coerceKeyToString) {
      if (coerceKeyToString == CoerceKeyToString.YES) {
        key = new PyFunctionExprBuilder("runtime.maybe_coerce_key_to_string").addArg(key).asPyExpr();
      }
      switch (notFoundBehavior.getType()) {
        case RETURN_NONE:
          return new PyFunctionExprBuilder("runtime.key_safe_data_access")
              .addArg(new PyExpr(containerExpr, Integer.MAX_VALUE))
              .addArg(key)
              .build();
        case THROW:
          return new PyFunctionExprBuilder(containerExpr + ".get").addArg(key).build();
        case DEFAULT_VALUE:
          return new PyFunctionExprBuilder(containerExpr + ".get")
              .addArg(key)
              .addArg(notFoundBehavior.getDefaultValue())
              .build();
      }
      throw new AssertionError(notFoundBehavior.getType());
    }