Construtor Java e Ordem de Inicialização de Campo

Eu sei que os construtores de objetos Java inicializam implicitamente os campos não estáticos de suas instâncias. No entanto, não tenho certeza da ordem em que isso acontece em uma hierarquia de classes. Por exemplo

abstract public class AbstractPieceSequence implements PieceSequence
{
    private Tetromino current;
    private Tetromino preview;

    public AbstractPieceSequence()
    {
        advance();
    }

    @Override
    public final void advance()
    {
        if (preview == null) {
            current = getNextPiece();
            preview = getNextPiece();
        } else {
            current = preview;
            preview = getNextPiece();
        }
    }

    abstract protected Tetromino getNextPiece();
}
public class ShufflePieceSequence extends AbstractPieceSequence
{
    private List<Shape> bag = new LinkedList<Shape>();

    @Override
    protected Tetromino getNextPiece()
    {
        if (bag.size() == 0) {
            Collections.addAll(bag, Shape.I, Shape.J, Shape.L, Shape.O, Shape.S, Shape.T, Shape.Z);
        }

        return Tetromino.tetrominoes.get(bag.remove(0));
    }
}

O construtor do pai chama um método na classe filho, que lança uma exceção como o valor deList<Shape> bag atualmente é nulo.

Posso definir um construtor filho e chamar super (), mas essa deve ser a primeira linha no corpo do construtor (o que significa que ainda não tenho a chance de inicializar o bag antes degetNextPiece é chamado)

Estou perdendo algo óbvio.

questionAnswers(4)

yourAnswerToTheQuestion