public String toString() {
		if (hasField("toString")) {
			Variable var = getField("toString");
			if (var.getValue() instanceof Function) {
				Function func = (Function)var.getValue();
				try {
					Variable ret = func.run(null);
					return ret.getValue().toString();
				} catch (ScriptException e) {
					e.printStackTrace();
				} catch (JizzException e) {
					e.printStackTrace();
				}
			}
		}
		StringBuilder builder = new StringBuilder();
		Iterator<Entry<String, Variable>> it =  variables.entrySet().iterator();
		while (it.hasNext()) {
			Entry<String, Variable> e = it.next();
			builder.append(e.getKey());
			builder.append(" = ");
			builder.append(e.getValue());
			if (it.hasNext()) {
				builder.append("\t");
			}
		}
		return builder.toString();
	}