public function only(array $keys)
    {
        return $this->pipe(function ($values) use ($keys) {
            $result = Result::success();

            foreach ($values as $key => $_) {
                if (in_array($key, $keys)) {
                    continue;
                }

                return $result->concat(
                    Result::failure("contains '$key'")
                );
            }

            return $result;
        });
    }