private void removeChar(int c) {
		for (int i = 0; i < size / 2; i++) {
			if (ranges[i * 2] <= c && ranges[i * 2 + 1] >= c) {
				if (ranges[i * 2] == c) {
					if (ranges[i * 2 + 1] == c) {
						for (int j = i * 2 + 2; j < size; j++) { // shift left
							ranges[j - 2] = ranges[j];
						}
						size -= 2;
					} else {
						ranges[i * 2] += 1;
					}
				} else {
					if (ranges[i * 2 + 1] == c) {
						ranges[i * 2 + 1] -= 1;
					} else {
						// split
						insert(i * 2 + 1, c - 1, c + 1);
					}
				}
				return;
			}
		}
	}