def METHOD_NAME(
    self,
    *,
    schema: Optional[tiledb.ArraySchema] = None,
    column_names: Optional[Sequence[str]] = None,
    query_condition: Optional[tiledb.QueryCondition] = None,
    result_order: Optional[ResultOrderStr] = None,
) -> clib.SOMAArray:
    """Constructs a C++ SOMAArray using appropriate context/config/etc."""
    # Leave empty arguments out of kwargs to allow C++ constructor defaults to apply, as
    # they're not all wrapped in std::optional<>.
    kwargs: Dict[str, object] = {}
    if schema:
        kwargs["schema"] = schema
    if column_names:
        kwargs["column_names"] = column_names
    if query_condition:
        kwargs["query_condition"] = query_condition
    if result_order:
        result_order_map = {
            "auto": clib.ResultOrder.automatic,
            "row-major": clib.ResultOrder.rowmajor,
            "column-major": clib.ResultOrder.colmajor,
        }
        result_order_enum = result_order_map[ResultOrder(result_order).value]
        kwargs["result_order"] = result_order_enum
    return clib.SOMAArray(
        self.uri,
        name=f"{self} reader",
        platform_config=self._ctx.config().dict(),
        timestamp=(0, self.tiledb_timestamp_ms),
        **kwargs,
    )