: último filho não está funcionando como esperado?

A questão está dentro deste CSS e HTML. Aqui está umlink para jsFiddle com o código de amostra.

HTML

<ul>
    <li class"complete">1</li>
    <li class"complete">2</li>
    <li>3</li>
    <li>4</li>
</ul>

CSS

li.complete:last-child {
    background-color:yellow;
}

li.complete:last-of-type {
    background-color:yellow;
}

Nenhuma dessas linhas de CSS deve ter como alvo oúltimo elemento li com a classe "completa"?

Esta consulta no jQuery não tem como alvo:

$("li.complete:last-child");

Mas esse aqui faz:

$("li.complete").last();

li {
  background-color: green;
}
li.complete:first-child {
  background-color: white;
}
li.complete:first-of-type {
  background-color: red;
}
li.complete:last-of-type {
  background-color: blue;
}
li.complete:last-child {
  background-color: yellow;
}
<ul>
  <li class="complete">1</li>
  <li class="complete">2</li>
  <li>3</li>
  <li>4</li>
</ul>

questionAnswers(3)

yourAnswerToTheQuestion