public static function init() {
		parent::init( self::$magicWordKeys, self::$substitutes,
				self::$magicWordArray, self::$flipMagicWordKeys );
		self::$long = new self( self::long );
		self::$short = new self( self::short );
	}
	/**
	 * Recognize and process the flags.
	 *
	 * @global type $wikiCitationValidateArguments
	 */
	protected function matchFlags() {
		global $wikiCitationValidateArguments;
		foreach( $this->flags as $flag ) {
			# Match flag for citation type.
			$citationType = WCCitationTypeEnum::match( $flag );
			if ( $citationType ) {
				$this->citationType = $citationType;
				continue;
			}
			# Match flag for citation length.
			$citationLength = WCCitationLengthEnum::match( $flag );
			if ( $citationLength ) {
				$this->citationLength = $citationLength;
				continue;
			}
			# If the function encounters an unknown flag, an error is thrown.
			if ( $wikiCitationValidateArguments ) {
				throw new WCException( 'wc-flag-unknown', $flag );
			}
		}

		# Throw exception for explicit "short bibliography" citation.
		if ( isset( $this->citationLength )
			&& isset( $this->citationLength )
			&& $this->citationLength->key == WCCitationLengthEnum::short
			&& $this->citationType->key == WCCitationTypeEnum::biblio
			&& $wikiCitationValidateArguments )
		{
			if ( $wikiCitationValidateArguments) {
				throw new WCException(
					'wc-incompatible-flags',
					new WCCitationLengthEnum( WCCitationLengthEnum::short ),
					new WCCitationTypeEnum( WCCitationTypeEnum::biblio )
				);
			} else {
				$this->citationLength->key = WCCitationLengthEnum::long;
			}
		}

	}