public function oneOfOptionsFromCallback(callable $valueLabelMapCallback, callable $labelFromValueLoader = null)
    {
        $valueLabelMapCallback = function (string $filter = null) use ($valueLabelMapCallback) {
            $options = [];

            foreach ($valueLabelMapCallback($filter) as $key => $value) {
                $options[] = $value instanceof IFieldOption ? $value : new FieldOption($key, $value);
            }

            return $options;
        };

        if ($labelFromValueLoader) {
            $labelFromValueLoader = function ($value) use ($labelFromValueLoader) {
                $option = $labelFromValueLoader($value);

                return $option ? new FieldOption($value, $option) : null;
            };
        }

        return $this->attr(FieldType::ATTR_OPTIONS, new CallbackFieldOptions($valueLabelMapCallback, $labelFromValueLoader));
    }