To fix this I had to use a "Upper Bounded Wildcard" on the parameter of the function which fixed the typing issue. So instead of
public void bar(List<Parent> parents) {
parents.stream.forEach(parent::foo);
}
We changed it to
public void bar(List<? extends Parent> parents) {
parents.stream.forEach(parent::foo);
}