Properties vp = f.getProperties();
Properties vp = f.getLocalSlots();
    private void writeFrame(Frame f, int i) {      out.print(          "<a name=\"frame"+i+"\">");      UID uid = f.getUID();      boolean selected = false;      boolean modified = false;      Object oldValue = null;      if (modifyUID != null &&          modifyUID.equals(uid) &&          newSlot != null) {        selected = true;        out.print("<a name=\"modified\">");        Object o = f.getValue(newSlot);        if (!(o == null ?              newValue == null :              o.equals(newValue))) {          if (newValue == null) {            System.out.println("FIXME: removeValue("+newSlot+")");          }          f.setValue(newSlot, newValue);          modified = true;          oldValue = o;        }      }      out.print(          "<table border=1>\n"+          "<tr><th colspan=4>"+          (f instanceof PrototypeFrame ? "Prototype" : "Frame")+          " "+i+"</th></tr>\n"+          "<tr><td><table border=0>\n"+          "<tr><td>FrameSet Name: &nbsp;</td><td colspan=3>"+          name+"</td></tr>\n"+          "<tr><td>Kind: &nbsp;</td><td colspan=3>"+          f.getKind()+"</td></tr>\n"+          "<tr><td>UID: &nbsp;</td><td colspan=3>"+          linkToUID(f.getUID())+          "</td></tr>\n");      Frame proto = f.getPrototype();      out.print(          "<tr><td>Prototype: &nbsp;</td><td colspan=3>"+          (proto == null ? "<i>null</i>" :           proto.getKind()+" ("+linkToUID(proto.getUID())+")")+          "</td></tr>\n");      Frame parent = f.getParent();      out.print(          "<tr><td>Parent: &nbsp;</td><td colspan=3>"+          (parent == null ? "<i>null</i>" :           parent.getKind()+" ("+linkToUID(parent.getUID())+")")+          "</td></tr>\n");      Properties vp = f.getProperties();      int nvp = (vp == null ? 0 : vp.size());      out.print(          "<tr><td colspan=4>Properties["+nvp+"]:</td></tr>\n");      if (nvp > 0) {        int j = 0;        for (Enumeration en = vp.propertyNames();            en.hasMoreElements();            ) {          String key = (String) en.nextElement();          String val = vp.getProperty(key); // must be string!          j++;          out.print(              "<tr><td>&nbsp;&nbsp;"+j+":&nbsp;</td>"+              "<td>"+key+"</td><td>"+val+"</td>"+              "<td>"+              (modified && key.equals(newSlot) ?               "<b>(was "+oldValue+")</b>" : "")+              "</td>"+              "</tr>\n");        }      }      out.print(          "<tr>"+          "<form method=\"GET\" action=\""+          request.getRequestURI()+          "#modified"+          "\" target=\""+RESULT_PAGE+"\">\n"+          "<input type=hidden name=\""+PAGE_PARAM+          "\" value=\""+RESULT_PAGE+"\"/>\n"+          "<input type=hidden name=\""+NAME_PARAM+          "\" value=\""+name+"\"/>\n"+          "<input type=hidden name=\""+KIND_PARAM+          "\" value=\""+kind+"\"/>\n");      for (int j = 0; j < NUM_SEARCH_SLOTS; j++) {        if (slots[j] == null) continue;        out.print(            "<input type=hidden name=\""+SLOT_PARAM+j+            "\" value=\""+slots[j]+"\"/>\n");        if (values[j] != null) {          out.print(              "<input type=hidden name=\""+VALUE_PARAM+j+              "\" value=\""+values[j]+"\"/>\n");        }      }      out.print(          "<input type=hidden name=\""+UID_PARAM+          "\" value=\""+encodeUID(f.getUID())+"\"/>\n");      out.print(          "<td>"+          (modified ? "<b>Modified</b>" : "Modify")+          " slot:&nbsp;</td>"+          "<td><input name=\""+          NEW_SLOT_PARAM+"\" type=\"text\" size=\"20\" value=\""+          (selected && newSlot != null ? newSlot : "")+          "\"></td>"+          "<td><input name=\""+          NEW_VALUE_PARAM+"\" type=\"text\" size=\"20\" value=\""+          (selected && newValue != null ? newValue : "")+          "\"></td>"+          "<td><input type=\"submit\" value=\"Modify\"/>\n"+          "</td>"+          "</form>\n"+          "</tr>\n"+          "</table>"+          "</td></tr></table>\n");    }