public IActivityDescriptor Find(string name)
        {
            var descriptor = _parent?.Find(name);

            if (descriptor != null)
            {
                return(descriptor);
            }
            return(_descriptors.TryGetValue(name, out descriptor) ? descriptor : null);
        }
        public Activity Parse(JsonElement node)
        {
            var typeName   = node.GetProperty("$type").GetString();
            var descriptor = _descriptorProvider.Find(typeName);

            if (descriptor == null)
            {
                throw new Exception($"can not find descriptor of activity type {typeName}");
            }
            return(descriptor.Parse(node, _typeInfoProvider, this));
        }