private void BuildLayout(ExpressionInfo controllerExpressionInfo)
        {
            var def = new AvatarDefinition(controllerExpressionInfo.AvatarDescriptor);

            IEnumerable <VrcParameterDefinition> parameters = def.Children.OfType <VrcParameterDefinition>();

            foreach (VrcParameterDefinition parameterDefinition in parameters)
            {
                string        parameter = parameterDefinition.Name;
                VisualElement row       = _dataRow.InstantiateTemplate(_parameterList.contentContainer);
                row.Q("parameter").Add(ObjectHolder.CreateHolder(parameterDefinition, this));

                foreach (AnimatorLayerDefinition l in GetLayers(def, parameter))
                {
                    if (!l.TryGetFirstParent(out AnimatorDefinition _))
                    {
                        continue;
                    }

                    row.Q("layer").Add(ObjectHolder.CreateHolder(l, this));
                }

                foreach (MotionDefinition m in GetMotions(def, parameter))
                {
                    if (m.Motion == null)
                    {
                        continue;
                    }

                    row.Q("misc").Add(ObjectHolder.CreateHolder(m, this));
                }

                foreach (VrcParameterDriverDefinition d in GetDrivers(def, parameter))
                {
                    row.Q("misc").Add(ObjectHolder.CreateHolder(d, this));
                }


                foreach (MenuControlDefinition m in GetMenuControls(def, parameter))
                {
                    if (!m.TryGetFirstParent(out MenuDefinition _))
                    {
                        continue;
                    }

                    row.Q("menu").Add(ObjectHolder.CreateHolder(m, this));
                }
            }
        }