def METHOD_NAME(self, layer: Layer, rank: int, comp_layer_db: LayerDatabase):
    """
    Performs spatial svd and splits given layer into two layers
    :param layer: Layer to split
    :param rank: Rank to use for spatial svd splitting
    :param comp_layer_db: Compressed layer db to update with the split layers
    :return: None
    """
    # Split module using Spatial SVD
    module_a, module_b = SpatialSvdModuleSplitter.split_module(layer.module, rank)
    first_layer_shape = copy.copy(layer.output_shape)
    # Set the second dimension (output_channels) to the rank being used for splitting first layer
    first_layer_shape[1] = rank
    # Special logic for strided layers
    first_layer_shape[3] = first_layer_shape[3] * layer.module.stride[1]
    # Create two new layers and return them
    layer_a = Layer(module_a, layer.name + '.0', first_layer_shape)
    layer_b = Layer(module_b, layer.name + '.1', layer.output_shape)
    comp_layer_db.replace_layer_with_sequential_of_two_layers(layer, layer_a, layer_b)