public function setFieldContentState($stateFlag, $field = null, $value = null)
    {
        if ($stateFlag <= $this->fieldConstructionObject['objectState']
            || $stateFlag < self::FIELD_TYPE_NOT_CREATED
        ) {
            return;
        }

        // recursively set previous states if necessary
        $this->setFieldContentState($stateFlag - 1, $field, $value);

        switch ($stateFlag) {
            case self::FIELD_TYPE_NOT_CREATED:
                throw new \Exception('A field type must be declared before anything else');
                break;
            case self::CONTENT_TYPE_CREATED:
                $this->createContentType();
                break;
            case self::FIELD_TYPE_ASSOCIATED:
                $this->associateFieldToContentType();
                break;
            case self::CONTENT_TYPE_PUBLISHED:
                $this->publishContentType();
                break;
            case self::CONTENT_PUBLISHED:
                $this->createAndPublishContent($field, $value);
                break;
        }
    }