protected function readOnlySafetyCheck()
    {

        switch( static::$isReadOnly ) {

            case self::FULL_ACCESS:
                return false;
            case self::READONLY_DISABLE:
                return true;
            case self::READONLY_EXCEPTION:
                throw new ReadonlyException( "Entity is readonly" );
            case self::READONLY_ON_PERSIST:
                if( $this->isNew() !== false ) {
                    return false;
                }
                throw new ReadonlyException( "Entity has been persisted and is now readonly" );

            default:
                throw new \InvalidArgumentException( "Entity self::\$isReadonly is has a invalid argument" );

        }

    }