def METHOD_NAME():
    A = MatrixSymbol('A', n, n)
    B = MatrixSymbol('B', n, m)
    C = MatrixSymbol('C', m, n)
    D = MatrixSymbol('D', m, m)
    X = BlockMatrix([[A, B], [C, D]])
    Y = BlockMatrix([[A]])
    assert X.is_square
    assert (block_collapse(X + Identity(m + n)) ==
            BlockMatrix([[A + Identity(n), B], [C, D + Identity(m)]]))
    assert isinstance(X + Identity(m + n), MatrixExpr)
    assert (X + MatrixSymbol('Q', n + m, n + m)).is_MatAdd
    assert (X * MatrixSymbol('Q', n + m, n + m)).is_MatMul
    assert block_collapse(Y.inverse()) == A.inverse()
    assert block_collapse(X.inverse()) == BlockMatrix([
        [(-B*D.inverse()*C + A).inverse(), -A.inverse()*B*(D + -C*A.inverse()*B).inverse()],
        [-(D - C*A.inverse()*B).inverse()*C*A.inverse(), (D - C*A.inverse()*B).inverse()]])
    assert isinstance(X.inverse(), Inverse)
    assert not X.is_Identity
    Z = BlockMatrix([[Identity(n), B], [C, D]])
    assert not Z.is_Identity