class Record implements Value, CopyableValue<Record> {

	public void removeField(int fieldNum)
	{
		// range check
		if (fieldNum < 0 || fieldNum >= this.numFields) {
			throw new IndexOutOfBoundsException();
		}
		int lastIndex = this.numFields - 1;		

		if (fieldNum < lastIndex) {
			int len = lastIndex - fieldNum;
			System.arraycopy(this.offsets, fieldNum + 1, this.offsets, fieldNum, len);
			System.arraycopy(this.lengths, fieldNum + 1, this.lengths, fieldNum, len);
			System.arraycopy(this.readFields, fieldNum + 1, this.readFields, fieldNum, len);
			System.arraycopy(this.writeFields, fieldNum + 1, this.writeFields, fieldNum, len);
			markModified(fieldNum);
		}
		this.offsets[lastIndex] = NULL_INDICATOR_OFFSET;
		this.lengths[lastIndex] = 0;
		this.writeFields[lastIndex] = null;

		setNumFields(lastIndex);
	}

	public  Record();
	public  Record(Value value);
	public  Record(Value val1, Value val2);
	public  Record(int numFields);

}