out.println(v.toString() + "(" + array.getSize() + ") {");
out.println("array(" + array.getSize() + ") {");
  private static void var_dump_impl(Env env, WriteStream out,				    Value v, int depth,				    IdentityHashMap<Value,String> valueSet)    throws Throwable  {    if (v instanceof Var)      out.print("&");        v = v.toValue();        if (valueSet.get(v) != null) {      out.print("#recursion#");      return;    }    try {      valueSet.put(v, "printing");      if (v instanceof ObjectValue) {	ObjectValue object = (ObjectValue) v;	out.println("object(" + object.getName() + ") (" + object.getSize() + ") {");	for (Map.Entry<Value,Value> mapEntry : object.entrySet()) {	  ArrayValue.Entry entry = (ArrayValue.Entry) mapEntry;	  	  printDepth(out, 2 * depth + 2);	  out.print("[");	  out.print("\"" + entry.getKey().toString() + "\"");	  out.println("]=>");	  printDepth(out, 2 * depth + 2);	  var_dump_impl(env, out, entry.getRawValue(), depth + 1, valueSet);	  out.println();	}	printDepth(out, 2 * depth);	out.print("}");      }      else if (v instanceof ArrayValue) {	ArrayValue array = (ArrayValue) v;	out.println(v.toString() + "(" + array.getSize() + ") {");	for (Map.Entry<Value,Value> mapEntry : array.entrySet()) {	  ArrayValue.Entry entry = (ArrayValue.Entry) mapEntry;	  	  printDepth(out, 2 * depth + 2);	  out.print("[");	  Value key = entry.getKey();	  if (key instanceof StringValue)	    out.print("\"" + key + "\"");	  else	    out.print(key);	  out.println("]=>");	  printDepth(out, 2 * depth + 2);	  var_dump_impl(env, out, entry.getRawValue(), depth + 1, valueSet);	  out.println();	}	printDepth(out, 2 * depth);	out.print("}");      }      else if (v instanceof BooleanValue) {	if (v.toBoolean())	  out.print("bool(true)");	else	  out.print("bool(false)");      }      else if (v instanceof LongValue) {	out.print("int(" + v.toLong() + ")");      }      else if (v instanceof DoubleValue) {	out.print("float(" + v.toDouble() + ")");      }      else if (v instanceof StringValue) {	String s = v.toString();      	out.print("string(" + s.length() + ") \"" + s + "\"");      }      else if (v instanceof NullValue) {	out.print("NULL");      }      else {	v.print(env);      }    } finally {      valueSet.remove(v);    }  }