public void CreateComplexList_ReturnExpressionAsString() { var values = new MyList2 { MyProp = 100 }; values.Add(new StringBuilder("value1")); values.Add(new StringBuilder("value2")); var expression = values.AsExpression(); var result = expression.DefaultSerializer.Serialize(); var expected = $"\"{values.GetType().Name}.{values.GetHashCode()}\" + \"[0].{values[0].GetHashCode()}\" + \"[1].{values[1].GetHashCode()}\" + \"MyProp: 100\" + \"Capacity: 4\" + \"Count: 2\""; Assert.Equal(6, expression.Count); Assert.IsType<ComplexEntity>(expression[0]); Assert.IsType<CollectionItemEntity>(expression[1]); Assert.IsType<CollectionItemEntity>(expression[2]); Assert.IsType<PropertyEntity>(expression[3]); Assert.IsType<PropertyEntity>(expression[4]); Assert.IsType<PropertyEntity>(expression[5]); Assert.Equal(expected, result); }