Refactored IndexedRecord class to use generics to specify type of
records contained within and refactored getRecordType method to use
generic specification meta data to determin record type at runtime.