code: private void actionWillProduce()
      {
          if (checker.checkProduction(current))
          {
              startProduction(current);
              state = ProducerState.PRODUCING;
          }
          else
          {
              for (final ProducerListener listener : listeners)
              {
                  listener.notifyCanNotProduce(current);
              }
          }
      }
docs: Action called from update production in will produce state.