protected abstract SquareMatrix <T> Visit(SquareMatrix <T> firstMatrix, SquareMatrix <T> secondMatrix);