docs: public String poolContent() {
  		StringBuilder result = new StringBuilder();
  		for (int i = 1; i < maxPoolSize; i++) {
  			result.append(String.format("#%02x: ", i));
  			int pos = offsets[i];
  			switch(types[i]) {
  			case UTF8:
  				result.append("Utf8 ").append(utf8s[i]);
  				break;
  			case CLASS:
  				result.append("Class ").append(getClassName(i));
  				break;
  			case STRING:
  				result.append("String \"").append(utf8s[readValue(pos)]).append("\"");
  				break;
  			case INTEGER:
  				result.append("int ").append(readInteger(i));
  				break;
  			case FLOAT:
  				result.append("float ").append(readFloat(i));
  				break;
  			case FIELD:
  				appendAccess(result.append("Field "), i);
  				break;
  			case METHOD:
  			case INTERFACE_METHOD:
  				appendAccess(result.append("Method "), i);
  				break;
  			case NAME_TYPE:
  				appendNameAndType(result.append("Name&Type "), i);
  				break;
  			case LONG:
  				result.append("long ").append(readLong(i));
  				break;
  			case DOUBLE:
  				result.append("double ").append(readDouble(i));
  				break;
  			case METHOD_HANDLE:
  				result.append("MethodHandle...");
  				break;
  			case METHOD_TYPE:
  				result.append("MethodType...");
  				break;
  			case INVOKE_DYNAMIC:
  				result.append("InvokeDynamic...");
  				break;
  			case 0:
  				result.append("(cont.)");
  				break;
  			}
  			result.append("\n");
  		}
  		return result.toString();
  	}