Task task = (Task) tasks.get (atts.getValue ("task"));
Task task = getTask (atts.getValue ("task"));
    public void startElement (String uri, String local,                              String name, Attributes atts) {      if (name.equals ("FIELD")) {        if (atts.getValue ("list") != null) {          SchObject object = (SchObject) stack.peek();		  object.addListField (atts.getValue ("name"));        } else if (atts.getValue ("obj") != null) {        } else {          boolean iskey = atts.getValue ("key") != null;          SchObject o = (SchObject) stack.peek();	            o.addField (atts.getValue ("name"), atts.getValue ("type"),                      atts.getValue ("value"), iskey, false);          if (iskey)            keyValue = atts.getValue ("value");        }        names.push (atts.getValue ("name"));        types.push (atts.getValue ("type"));      }      else if (name.equals ("OBJECT")) {        stack.push (new SchObject (timeOps));      }      else if (name.equals ("TASK"))        stack.push (new Task (timeOps));      else if (name.equals ("RESOURCE"))        stack.push (new Resource (timeOps));      else if (name.equals ("GLOBAL")) {        stack.push (new SchObject (timeOps));        globals.put (atts.getValue ("name"), stack.peek ());        globalTypes.put (atts.getValue ("name"), atts.getValue ("type"));      }      else if (name.equals ("WINDOW")) {        startTime = timeOps.stringToTime (atts.getValue ("start"));        if ((atts.getValue ("end") != null) &&            (! atts.getValue ("end").equals ("")))          endTime = timeOps.stringToTime (atts.getValue ("end"));      }      else if (name.equals ("VALUE")) {        SchObject object = (SchObject) stack.peek();        String nameForList = (String) names.peek ();        String typeForList = (String) types.peek ();        object.addField (nameForList, typeForList,                         atts.getValue ("value"), false, true);      }      else if (name.equals ("VALUE2")) {	stack.push (new SchObject (timeOps));      }      else if (name.equals ("OBJECT")) {	stack.push (new SchObject (timeOps));      }      else if (name.equals ("FROZEN")) {        Task task = (Task) tasks.get (atts.getValue ("task"));        if (task == null) {          System.out.println ("Unknown task to freeze: " +                              atts.getValue ("task"));          return;        }        primaryTasks.remove (task);        frozenTasks.put (task, new Assignment		  (getTask (atts.getValue ("task")),		   getResource (atts.getValue ("resource")),		   timeOps.stringToTime (atts.getValue ("start")),		   timeOps.stringToTime (atts.getValue ("start")),		   timeOps.stringToTime (atts.getValue ("end")),		   timeOps.stringToTime (atts.getValue ("end")),		   true, timeOps));      }      else if (! name.equals ("DATA"))        System.out.println ("SchedulingData.startElement - " +                             "Unknown tag in scheduling data: " + name);    }