code: public final Object[][] addNameValue(Object[][] mxString, String strName, Object strValue)
      {
          if (strName == null)
              return mxString;
          if (strValue == null)
              return mxString;
          if (mxString == null)
              mxString = new Object[1][2];
          else
          {
              for (int i = 0; i < mxString.length; i++)
              {   // If it is already there, replace the value.
                  if (strName.equalsIgnoreCase((String)mxString[i][MessageConstants.NAME]))
                  {
                      mxString[i][MessageConstants.VALUE] = strValue;
                      return mxString;
                  }
              }
              Object[][] tempString = mxString;
              mxString = new Object[tempString.length + 1][2];
              for (int i = 0; i < tempString.length; i++)
              {
                  mxString[i][MessageConstants.NAME] = tempString[i][MessageConstants.NAME];
                  mxString[i][MessageConstants.VALUE] = tempString[i][MessageConstants.VALUE];
              }
          }
          
          int i = mxString.length - 1;
          mxString[i][MessageConstants.NAME] = strName;
          mxString[i][MessageConstants.VALUE] = strValue;
          
          return mxString;
      }
docs: Add this name/value pair to this matrix.
  Note: Be careful as the matrix is updated by this method... If the matrix was the
  properties matrix, there would be no way to know where the old tree entry was.
  @param mxString Source matrix (or null if new).
  @param strName Name to add
  @param strValue Value to add
  Skip if the value is null.