public ExperimentStructureDataFields getFields(java.util.Map<String, String> __ctx)
     throws IceInternal.LocalExceptionWrapper {
   IceInternal.Outgoing __og =
       __handler.getOutgoing("getFields", Ice.OperationMode.Idempotent, __ctx);
   try {
     boolean __ok = __og.invoke();
     try {
       if (!__ok) {
         try {
           __og.throwUserException();
         } catch (Ice.UserException __ex) {
           throw new Ice.UnknownUserException(__ex.ice_name());
         }
       }
       IceInternal.BasicStream __is = __og.is();
       __is.startReadEncaps();
       ExperimentStructureDataFields __ret;
       __ret = new ExperimentStructureDataFields();
       __ret.__read(__is);
       __is.endReadEncaps();
       return __ret;
     } catch (Ice.LocalException __ex) {
       throw new IceInternal.LocalExceptionWrapper(__ex, false);
     }
   } finally {
     __handler.reclaimOutgoing(__og);
   }
 }
 public void setFields(
     ExperimentStructureDataFields fields,
     String[] fieldNames,
     java.util.Map<String, String> __ctx)
     throws IceInternal.LocalExceptionWrapper {
   IceInternal.Outgoing __og =
       __handler.getOutgoing("setFields", Ice.OperationMode.Idempotent, __ctx);
   try {
     try {
       IceInternal.BasicStream __os = __og.os();
       fields.__write(__os);
       FieldNameListHelper.write(__os, fieldNames);
     } catch (Ice.LocalException __ex) {
       __og.abort(__ex);
     }
     boolean __ok = __og.invoke();
     if (!__og.is().isEmpty()) {
       try {
         if (!__ok) {
           try {
             __og.throwUserException();
           } catch (Ice.UserException __ex) {
             throw new Ice.UnknownUserException(__ex.ice_name());
           }
         }
         __og.is().skipEmptyEncaps();
       } catch (Ice.LocalException __ex) {
         throw new IceInternal.LocalExceptionWrapper(__ex, false);
       }
     }
   } finally {
     __handler.reclaimOutgoing(__og);
   }
 }