public PrototypeExtractor AddChildAt(string name, string selector, string valueSelector, string type, Action<PrototypeExtractor> self = null)
 {
     var pe = new PrototypeExtractor { Name = name, Selector = selector, ValueSelector = valueSelector, Type = type, WrapNullCheck = true, Parent = this };
     if (self != null) self(pe);
     ChildExtractors.Add(pe);
     return this;
 }
 public PrototypeExtractor AddChild(PrototypeExtractor propertyExtractor, Action<PrototypeExtractor> add = null)
 {
     propertyExtractor.Parent = this;
     ChildExtractors.Add(propertyExtractor);
     return this;
 }
 public PrototypeExtractor(PrototypeExtractor parent, string name, string selector, string valueSelector)
 {
     ChildExtractors = new List<PrototypeExtractor>();
 }