src/main/java/org/fest/assertions/ListAssert.java
@Override
  public @NotNull ListAssert onProperty(@NotNull String propertyName) {
    isNotNull();
    if (actual.isEmpty()) {
      return new ListAssert(emptyList());
    }
    return new ListAssert(PropertySupport.instance().propertyValues(propertyName, actual));
  }
@Override
  public @NotNull ListAssert onProperty(@NotNull String propertyName) {
    isNotNull();
    if (actual.isEmpty()) {
      return new ListAssert(emptyList());
    }
    return new ListAssert(PropertySupport.instance().propertyValues(propertyName, actual));
  }
Creates a new instance of {@link ListAssert} whose target list contains the values of the given
property name from the elements of this {@code ListAssert}'s list. Property access works with both simple
properties like {@code Person.age} and nested properties {@code Person.father.age}.
<p/>
For example, let's say we have a list of {@code Person} objects and you want to verify their age:
<pre>
assertThat(persons).onProperty(&quot;age&quot;).containsOnly(25, 16, 44, 37); // simple property
assertThat(persons).onProperty("father.age").containsOnly(55, 46, 74, 62); // nested property
</pre>

@param propertyName the name of the property to extract values from the actual list to build a new
{@code ListAssert}.
@return a new {@code ListAssert} containing the values of the given property name from the elements of this
{@code ListAssert}'s list.
@throws AssertionError     if the actual list is {@code null}.
@throws IntrospectionError if an element in the given list does not have a matching property.
@since 1.3