public void ItShouldReturnAnExpressionGotTheImplementationType()
        {
            // Arrange
            string expected = $"implementationType: typeof({GetType()})";

            // Act
            IEnumerable <string> expressions =
                _initialValue.GetUpdateParameterExpressions(implementationType: GetType());

            // Assert
            expressions.ToList().Should().OnlyContain(e => e == expected);
        }
        /// <inheritdoc />
        public override string GetInstanceExpression(IGenerationContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            string factoryFieldName = GetComposeMethodName(context);

            IEnumerable <string> expressions = context.GetUpdateParameterExpressions(implementationType: Type);
            string updateParameters          = string.Join(", ", expressions);

            string instanceExpression =
                RequiresConstructionContext()
                    ? factoryFieldName + $"(context.Update({updateParameters}))"
                    : factoryFieldName + "()";

            return(instanceExpression);
        }