protected WriteAttributeResults processSetAttributes ( final Map<String, Variant> attributes, final OperationParameters operationParameters ) { final WriteAttributeResults writeAttributeResults = new WriteAttributeResults (); for ( final ChainProcessEntry chainEntry : this.chain ) { final ChainItem chainItem = chainEntry.getWhat (); final WriteAttributeResults partialResult = chainItem.setAttributes ( attributes ); if ( partialResult != null ) { for ( final Map.Entry<String, WriteAttributeResult> entry : partialResult.entrySet () ) { if ( entry.getValue ().isError () ) { attributes.remove ( entry.getKey () ); } writeAttributeResults.put ( entry.getKey (), entry.getValue () ); } } } process (); return handleUnhandledAttributes ( writeAttributeResults, attributes ); }