docs: public Object parse(String expr, String id) throws PHPException {
  		String varName = PHPInterpeter.getVar();
  		container.run(varName + " = " + expr);
  		String type = container.get(PHPInterpeter.getType(varName));
  		if ("string".equals(type)) {
  			return container.get(varName);
  		}
  		if ("boolean".equals(type)) {
  			return new Boolean("1".equals(container.get(varName)));
  		}
  		if ("integer".equals(type)) {
  			return new Integer(container.get(varName));
  		}
  		if ("double".equals(type)) {
  			return new Double(container.get(varName));
  		}
  		if ("array".equals(type)) {
  			String s = container.get(PHPInterpeter.serialize(PHPInterpeter.getArray(varName)));
  			String [] ids = Helper.parseArray(s);
  			Object [] array = new Object[ids.length];
  			for(int i = 0; i < ids.length; i ++) {
  				array[i] = parse(PHPInterpeter.getObject(ids[i]), ids[i]);
  			}
  			return array;
  		}
  		if ("object".equals(type)) {
  			String className = container.get(PHPInterpeter.getClass(varName));
  			if (id == null) {
  				id = container.get(PHPInterpeter.saveObject(varName));
  			}
  			PHPClassDescriptor desc = container.getClassDescriptor(className);
  			return desc.createNewObject(id);
  		}
  		return null;
  	}