gt:         for(int i = 1; i < nameValArray.length; i += 2)
context: // **********************************************************************
  //
  // Copyright (c) 2003-2017 ZeroC, Inc. All rights reserved.
  //
  // This copy of Ice is licensed to you under the terms described in the
  // ICE_LICENSE file included in this distribution.
  //
  // **********************************************************************
  
  package com.zeroc.IceGridGUI.Application;
  
  import java.awt.BorderLayout;
  import java.awt.event.ActionEvent;
  
  import javax.swing.AbstractAction;
  import javax.swing.JButton;
  import javax.swing.JComponent;
  import javax.swing.JOptionPane;
  import javax.swing.event.DocumentEvent;
  import javax.swing.event.DocumentListener;
  
  import com.jgoodies.forms.builder.DefaultFormBuilder;
  import com.jgoodies.forms.builder.ButtonBarBuilder;
  import com.jgoodies.forms.factories.Borders;
  import com.zeroc.IceGridGUI.*;
  
  public class Editor extends EditorBase
  {
      static public java.util.Map<String, String> makeParameterValues(
          java.util.Map<String, String> oldParameterValues,
          java.util.List<String> newParameters)
      {
          java.util.Map<String, String> result = new java.util.HashMap<>();
  
          for(String name : newParameters)
          {
              String value = oldParameterValues.get(name);
              if(value != null)
              {
                  result.put(name, value);
              }
          }
          return result;
      }
  
      public boolean save(boolean refresh)
      {
          if(_applyButton.isEnabled())
          {
              return validate() && applyUpdate(refresh);
          }
          else
          {
              return true;
          }
      }
  
      protected boolean validate()
      {
          return true;
      }
  
      protected boolean applyUpdate(boolean refresh)
      {
          assert false;
          return false;
      }
  
      protected void detectUpdates(boolean val)
      {
          _detectUpdates = val;
      }
  
      protected void discardUpdate()
      {
          Root root = _target.getRoot();
  
          if(_target.isEphemeral())
          {
              _target.delete();
          }
          else
          {
              _target.getCoordinator().getCurrentTab().showNode(_target);
          }
          root.cancelEdit();
      }
  
      @Override
      protected void appendProperties(DefaultFormBuilder builder)
      {
      }
  
      @Override
      protected void buildPropertiesPanel()
      {
          super.buildPropertiesPanel();
          JComponent buttonBar = new ButtonBarBuilder().addGlue().addButton(_applyButton, _discardButton).build();
          buttonBar.setBorder(Borders.DIALOG);
          _propertiesPanel.add(buttonBar, BorderLayout.SOUTH);
      }
  
      Editor()
      {
          //
          // _applyButton
          //
          AbstractAction apply = new AbstractAction("Apply")
              {
                  @Override
                  public void actionPerformed(ActionEvent e)
                  {
                      if(validate())
                      {
                          if(applyUpdate(true))
                          {
                              _target.getRoot().getTree().grabFocus();
                          }
                      }
                  }
              };
          _applyButton = new JButton(apply);
          _applyButton.setEnabled(false);
  
          //
          // _discardButton
          //
          AbstractAction discard = new AbstractAction("Discard")
              {
                  @Override
                  public void actionPerformed(ActionEvent e)
                  {
                      discardUpdate();
                      _target.getRoot().getTree().grabFocus();
                  }
              };
          _discardButton = new JButton(discard);
          _discardButton.setEnabled(false);
  
          _updateListener = new DocumentListener()
              {
                  @Override
                  public void changedUpdate(DocumentEvent e)
                  {
                      updated();
                  }
  
                  @Override
                  public void insertUpdate(DocumentEvent e)
                  {
                      updated();
                  }
  
                  @Override
                  public void removeUpdate(DocumentEvent e)
                  {
                      updated();
                  }
              };
      }
  
      //
      // Used by the sub-editor (when there is one)
      //
      Object getSubDescriptor()
      {
          return null;
      }
  
      Utils.Resolver getDetailResolver()
      {
          return null;
      }
  
      public TreeNode getTarget()
      {
          return _target;
      }
  
      void updated()
      {
          if(_detectUpdates)
          {
              _target.getRoot().disableRegistryUpdates();
              _applyButton.setEnabled(true);
              _discardButton.setEnabled(true);
          }
      }
  
      DocumentListener getUpdateListener()
      {
          return _updateListener;
      }
  
      //
      // Check that these 'val' are filled in
      //
      boolean check(String[] nameValArray)
      {
          String emptyFields = "";
          int errorCount = 0;
  
  