public ObjectAssembler(IRuntimeTypeSource typeSource, IValueContext valueContext, Settings settings = null)
: this(new StackingLinkedList<Level>(), typeSource, GetLifecycleListener(settings), valueContext)
{
this.valueContext = valueContext;
Guard.ThrowIfNull(typeSource, nameof(typeSource));
TypeSource = typeSource;
StateCommuter.RaiseLevel();
rootInstance = settings?.RootInstance;
var rootInstanceType = rootInstance?.GetType();
rootInstanceXamlType = rootInstanceType != null ? TypeSource.GetByType(rootInstanceType) : null;
}