chain -> value() returns correct type