internal ControlBuilder CreateChildBuilder(string tagName, IDictionary attribs,
                                                   TemplateParser parser, ControlBuilder parentBuilder, string id, int line,
                                                   string sourceFileName, ref Type childType)
        {
            ControlBuilder subBuilder;

            if (FChildrenAsProperties)
            {
                // If there is a default property, delegate to its builder
                if (_defaultPropBuilder != null)
                {
                    subBuilder = _defaultPropBuilder.CreateChildBuilder(tagName, attribs, parser,
                                                                        null, id, line, sourceFileName, ref childType);
                }
                else
                {
                    subBuilder = GetChildPropertyBuilder(tagName, attribs, ref childType);
                }
            }
            else
            {
                childType = GetChildControlType(tagName, attribs);
                if (childType == null)
                {
                    return(null);
                }

                subBuilder = CreateBuilderFromType(
                    parser, this, childType, tagName, id, attribs, line,
                    sourceFileName);
            }

            if (subBuilder == null)
            {
                return(null);
            }

            subBuilder._parentBuilder = (parentBuilder != null) ? parentBuilder : this;

            return(subBuilder);
        }