public void check() {
        super.check();
        checkHasKeys( new String[] { STATUS_KEY, } );
        String status = getStatus();
        if ( OK_STATUS.equals( status ) || WARNING_STATUS.equals( status ) ) {
            if ( ! containsKey( RESULT_KEY ) ) {
                throw new DataException( STATUS_KEY + "=" + status
                                       + " but no " + RESULT_KEY );
            }
        }
        if ( ERROR_STATUS.equals( status ) ||
             WARNING_STATUS.equals( status ) ) {
            if ( ! containsKey( ERROR_KEY ) ) {
                throw new DataException( STATUS_KEY + "=" + status
                                       + " but not " + ERROR_KEY );
            }
        }
        if ( ! containsKey( RESULT_KEY ) && ! containsKey( ERROR_KEY ) ) {
            throw new DataException( "Neither " + RESULT_KEY + 
                                     " nor " + ERROR_KEY +
                                     " keys present" );
        }
        if ( containsKey( ERROR_KEY ) ) {
            ErrInfo.asErrInfo( getMap( ERROR_KEY ) ).check();
        }
    }