@SuppressWarnings("unchecked")
	public <T> T[] getArray(Class<T> type, ReadCallback<T> callback) 
	{
		if (getBoolean()) {
			T[] array = (T[])Array.newInstance(type, getUshort());
			if (!valid) {
				return null;
			}
			for (int i = 0; i < array.length && valid; i++) {
				if (getBoolean()) {
					array[i] = callback.read(this);
				}
			}
			if (valid) {
				return array;	
			}
		}
		return null;
	}