'Implementations of __getitem__ should accept ints, in which
case the matrix is indexed as a flat list, tuples (i,j) in which
case the (i,j) entry is returned, slices, or mixed tuples (a,b)
where a and b are any combintion of slices and integers.'

def __getitem__(self, key):

    raise NotImplementedError('Subclasses    must    implement    this.')
