public void GetUsedProperties_TestComplexExpressionTargets() { RecursiveObject <int> recInt = RecursiveObject <int> .CreateOfDepth(1); RecursiveObject <string> recStr = RecursiveObject <string> .CreateOfDepth(2); RecursiveObject <string> deepestInnerStr = recStr.Inner.Inner; string suffix = "suffix"; recInt.Inner.FieldA = 3; recStr.PropertyB = "B"; deepestInnerStr.PropertyA = "A"; GetUsedPropertyTargets( () => deepestInnerStr.TrackFields().PropertyA. PadLeft(recInt.TrackFields().PropertyA * 2, ' ') + suffix ).Should().BeEquivalentTo(new object[] { recInt, deepestInnerStr }); }