public object Populate(object instance) { if (instance == null) { throw new ArgumentNullException(nameof(instance)); } EnsureInitialized(); _buildChain.Push(instance); try { return PopulateInstance(instance); } finally { _buildChain.Pop(); } }