Orden de ejecución de bloques estáticos en un Enum tipo w.r.t al constructor

Esto es de Effective Java:

// Implementing a fromString method on an enum type
  private static final Map<String, Operation> stringToEnum
      = new HashMap<String, Operation>();

  static { // Initialize map from constant name to enum constant
    for (Operation op : values())
      stringToEnum.put(op.toString(), op);
  }

  // Returns Operation for string, or null if string is invalid
  public static Operation fromString(String symbol) {
    return stringToEnum.get(symbol);
  }

Tenga en cuenta que las constantes de operación se colocan en el mapa stringToEnum desde un bloque estático que se ejecuta después de que se hayan creado las constantes. Intentar hacer que cada constante se ponga en el mapa desde su propio constructor causaría un error de compilación. Esto es algo bueno, porque causaría una NullPointerException si fuera legal. Los constructores de enumeración no tienen permiso para acceder a los campos estáticos de la enumeración, a excepción de los campos constantes en tiempo de compilación. Esta restricción es necesaria porque estos campos estáticos aún no se han inicializado cuando se ejecutan los constructores.

Mi pregunta es sobre la línea:

"Tenga en cuenta que las constantes de operación se colocan en el mapa stringToEnum desde un bloque estático que se ejecuta después de que se hayan creado las constantes".

Pensé que el bloque estático se ejecuta antes de que se ejecute el constructor. Se ejecutan realmente durante el tiempo de carga de clase.

Que me estoy perdiendo aqui ?

Respuestas a la pregunta(3)

Su respuesta a la pregunta