Method Reference: pasar la función al método con el argumento Consumer

Estoy aprendiendo acerca de las referencias a métodos de Java 8 y tengo dificultades para entender por qué funciona esto.

class Holder {
    private String holded;

    public Holder(String holded) {
        this.holded = holded;
    }

    public String getHolded() {
        return holded;
    }
}

private void run() {
    Function<Holder, String> getHolded = Holder::getHolded;

    consume(Holder::getHolded); //This is correct...
    consume(getHolded);         //...but this is not
}

private void consume(Consumer<Holder> consumer) {
    consumer.accept(null);
}

Como puedes ver enrun método -Holder::getHolded devuelve la referencia del método independiente que puede invocar pasando el objeto de tipoHolder como argumento. Me gusta esto:getHolded.apply(holder)

Pero por qué lanza esta referencia de método independiente aConsumer cuando se invoca directamente como un argumento de método, y no lo hace cuando pasoFunction explícitamente

Respuestas a la pregunta(2)

Su respuesta a la pregunta