code: public void write_attribute_reply(final DeviceProxy deviceProxy, final int id)
  		    throws DevFailed {
  		final Request request = ApiUtil.get_async_request(id);
          try {
              if (deviceProxy.device_5 != null || deviceProxy.device_4 != null) {
                  check_asynch_reply(deviceProxy, request, id, "write_attributes_4");
              } else if (deviceProxy.device_3 != null) {
                  check_asynch_reply(deviceProxy, request, id, "write_attributes_3");
              } else if (deviceProxy.device_2 != null) {
                  check_asynch_reply(deviceProxy, request, id, "write_attributes");
              } else {
                  check_asynch_reply(deviceProxy, request, id, "write_attributes");
              }
          }
          catch (ConnectionFailed e) {
              DeviceAttribute[]   deviceAttributes;
              try {
                  //  If failed, retrieve data from request object
                  final NVList args = request.arguments();
                  final Any any = args.item(0).value();
  
                  if (deviceProxy.idl_version>=4) {
                      AttributeValue_4[]    attributeValues_4 =
                              AttributeValueList_4Helper.extract(any);
  
                      deviceAttributes = new DeviceAttribute[attributeValues_4.length];
                      for (int i=0 ;  i<attributeValues_4.length ; i++) {
                          deviceAttributes[i] = new DeviceAttribute(attributeValues_4[i]);
                      }
                  }
                  else if (deviceProxy.idl_version>=3) {
                      AttributeValue[]    attributeValues =
                              AttributeValueListHelper.extract(any);
                      deviceAttributes = new DeviceAttribute[attributeValues.length];
                      for (int i=0 ;  i<attributeValues.length ; i++) {
                          deviceAttributes[i] = new DeviceAttribute(attributeValues[i]);
                      }
                  }
                  else
                      throw e;
              }
              catch (org.omg.CORBA.Bounds e1) {
                  System.err.println(e1);
                  throw e;
              }
  
              //  And do the synchronous write_attributes
              deviceProxy.write_attribute(deviceAttributes);
          }
      }
docs: ==========================================================================