docs: static
  	public Number getElementAt(Matrix matrix, int row, int column){
  		List<Array> arrays = matrix.getArrays();
  		List<MatCell> matCells = matrix.getMatCells();
  
  		Matrix.Kind kind = matrix.getKind();
  		switch(kind){
  			case DIAGONAL:
  				{
  					// "The content is just one Array of numbers representing the diagonal values"
  					if(arrays.size() == 1){
  						Array array = arrays.get(0);
  
  						List<? extends Number> elements = ArrayUtil.asNumberList(array);
  
  						// Diagonal element
  						if(row == column){
  							return elements.get(row - 1);
  						} else
  
  						// Off-diagonal element
  						{
  							int min = 1;
  							int max = elements.size();
  
  							if((row < min || row > max) || (column < min || column > max)){
  								throw new IndexOutOfBoundsException();
  							}
  
  							return matrix.getOffDiagDefault();
  						}
  					}
  				}
  				break;
  			case SYMMETRIC:
  				{
  					// "The content must be represented by Arrays"
  					if(arrays.size() > 0){
  
  						// Make sure the specified coordinates target the lower left triangle
  						if(column > row){
  							int temp = row;
  
  							row = column;
  							column = temp;
  						}
  
  						return getArrayValue(arrays, row, column);
  					}
  				}
  				break;
  			case ANY:
  				{
  					if(arrays.size() > 0){
  						return getArrayValue(arrays, row, column);
  					} // End if
  
  					if(matCells.size() > 0){
  
  						if(row < 1 || column < 1){
  							throw new IndexOutOfBoundsException();
  						}
  
  						Number value = getMatCellValue(matCells, row, column);
  						if(value == null){
  
  							if(row == column){
  								return matrix.getDiagDefault();
  							}
  
  							return matrix.getOffDiagDefault();
  						}
  
  						return value;
  					}
  				}
  				break;
  			default:
  				throw new UnsupportedAttributeException(matrix, kind);
  		}
  
  		throw new InvalidElementException(matrix);
  	}