public static void encode(Object object, ByteBuffer enc) {
		if (object == null) {
			enc.put((byte) 0x00);
			return;
		}
		if (object.getClass().isArray()) {
			enc.put((byte) 0x03);
			enc.putInt(Array.getLength(object));
			for (int i = 0; i < Array.getLength(object); i++) {
				encode(Array.get(object, i), enc);
			}
			return;
		}
		switch (object.getClass().getName()) {
		case "java.lang.Integer":
			enc.put((byte) 0x01);
			enc.putInt((Integer) object);
			break;
		case "java.lang.Boolean":
			enc.put((byte) 0x02);
			enc.put((byte) (((Boolean) object).booleanValue() ? 1 : 0));
			break;
		case "java.lang.String":
			enc.put((byte) 0x04);
			String local = (String) object;
			enc.putInt(local.length());
			enc.put(local.getBytes());
			break;
		default:
			enc.put((byte) 0x00);
			Logger.severe("Unhandlable object type: " + object.getClass());
			break;
		}
	}