valid = false;
}
else if ( attrs.size() != readableInfos.length )
{
// mismatch between claimed number of attributes and actual
final ArrayStringifier as = new ArrayStringifier( ", ", true );
final String claimedString = as.stringify( attrNames );
final Set<String> actualSet = JMXUtil.attributeListToValueMap( attrs ).keySet();
final Set<String> missingSet = ArrayConversion.arrayToSet( attrNames );
missingSet.removeAll( actualSet );
final String[] missingNames = (String[])ArrayConversion.setToArray( missingSet, true );
Arrays.sort( missingNames );
final String missingString = as.stringify( missingNames );
warning( "MBean " + quote( objectName ) +
" did not supply the " +
missingNames.length + " attributes " + missingString );
}