public long annotation(Type t, int startPos, int endPos) {
		if (files.size() == 0) {
			throw new RuntimeException("A file must be specified prior to making an annotation.");
		}
		if (shutdown) {
			throw new RuntimeException("The annotation pool is already shut down.");
		}
		writeInt(((files.size() - 1) << RESERVED_BITS) | t.ordinal());
		writeInt(linePos[startPos]);
		writeInt(columnPos[startPos]);
		writeInt(linePos[endPos]);
		writeInt(columnPos[endPos]);
		long encodedAnnotation = t.ordinal() | annotNo;
		annotNo += (1l << RESERVED_BITS);
		return encodedAnnotation;
	}