Value newvalue = new Value(valueString);
Value newvalue = createCurrentValueListValueObj(valueString);
       public void action (SaxDocumentHandler handler, char buf [], int offset, int len) {          // IF we get here, we have the delmited case for populating          // a value list.          // 1. set up information we need          // our string that we will parse          String valueListString = new String (buf, offset, len);          String delimiter = (String) CurrentValueListParameter.get("delimiter");          String repeatable = (String) CurrentValueListParameter.get("repeatable");          // 2. reconsitute information stored in CurrentValueListParameter table           String parentNodeName = (String) CurrentValueListParameter.get("parentNodeName");          // 3. split up string into values based on declared delimiter          // and snag the string representation of the values          ArrayList strValueList =               splitStringIntoStringObjects(valueListString, delimiter, repeatable, null );          // 4. add these values to the lookup table, if the original valueList had an ID          String valueListId = (String) CurrentValueListParameter.get("valueListId");          if (valueListId != null) {              // a warning check, just in case               if (ValueListObj.containsKey(valueListId))                 Log.warnln("More than one valueList node with valueListId=\""+valueListId+"\", using latest node." );              // add the valueList array into the list of valueList objects              ValueListObj.put(valueListId, strValueList);          }          //  5. If there is a reference object, clone it to get          //     the new valueList          String valueListIdRef = (String) CurrentValueListParameter.get("valueListIdRef");          if (valueListIdRef != null) {             if (ValueListObj.containsKey(valueListIdRef)) {                 // Just a simple clone since we have stored the ArrayList rather than the                 // ValueList object (which actually doesnt exist. :P                 ArrayList refValueListObj = (ArrayList) ValueListObj.get(valueListIdRef);                 strValueList = (ArrayList) refValueListObj.clone();// This is missing. Should allow override./*                 // override attrs with those in passed list              //   strValueList.setXMLAttributes(attrs);                 // give the clone a unique Id and remove IdRef               //   strValueList.setValueListId(findUniqueIdName(ValueListObj,strValueList.getValueListId()));              //   strValueList.setValueListIdRef(null);                 // add this into the list of valueList objects              //   ValueListObj.put(strValueList.getValueListId(), strValueList);*/              } else {                 Log.warnln("Error: Reader got an valueList with ValueListIdRef=\""+valueListIdRef+"\" but no previous valueList has that id! Ignoring add valueList request.");                 return;              }          }          // 6. determine where these values go and then insert them          //   (hurm. could have reused code here. lazy. feh.          if( parentNodeName.equals(XDFNodeName.AXIS) )          {             // get the last axis             List axisList = (List) CurrentArray.getAxes();             Axis lastAxisObject = (Axis) axisList.get(axisList.size()-1);             // now create value objects, add them to groups              Iterator iter = strValueList.iterator();             while (iter.hasNext())             {                String valueString = (String) iter.next();                // add the value to the axis                Value newvalue = new Value(valueString);                lastAxisObject.addAxisValue(newvalue);                // add this object to all open value groups                Iterator groupIter = CurrentValueGroupList.iterator();                while (groupIter.hasNext())                {                   ValueGroup nextValueGroupObj = (ValueGroup) groupIter.next();                   newvalue.addToGroup(nextValueGroupObj);                }             }          }            else if( parentNodeName.equals(XDFNodeName.PARAMETER) )          {             // now create value objects, add them to groups              Iterator iter = strValueList.iterator();             while (iter.hasNext())             {                String valueString = (String) iter.next();                // add the value to the axis                Value newvalue = new Value(valueString);                LastParameterObject.addValue(newvalue);                // add this object to all open value groups                Iterator groupIter = CurrentValueGroupList.iterator();                while (groupIter.hasNext())                {                   ValueGroup nextValueGroupObj = (ValueGroup) groupIter.next();                   newvalue.addToGroup(nextValueGroupObj);                }             }          }           else           {             Log.errorln("Error: weird parent node "+parentNodeName+" for "+XDFNodeName.VALUELIST+", aborting read.");             System.exit(-1);          }           CurrentValueListParameter.put("isDelimitedCase", "true"); // notify that we did the list        }