'Search through the price levels in the order book
:param price: The price of the price level
:param price_level: The price level to search in
:param quantity_to_trade: The quantity still to be matched
:param order: The order to match for
:type price: Price
:type price_level: PriceLevel
:type quantity_to_trade: Quantity
:type order: Order
:return: The quantity to trade and the proposed trades
:rtype: Quantity, [ProposedTrade]'

def _search_for_quantity_in_order_book(self, price, price_level, quantity_to_trade, order):

    if (price_level is None):
        return (quantity_to_trade, [])
    assert isinstance(price, Price), type(price)
    assert isinstance(price_level, PriceLevel), type(price_level)
    assert isinstance(quantity_to_trade, Quantity), type(quantity_to_trade)
    assert isinstance(order, Order), type(order)
    self._logger.debug('Searching    in    price    level:    %f', float(price))
    if (quantity_to_trade <= price_level.depth):
        (quantity_to_trade, proposed_trades) = self._search_for_quantity_in_price_level(price_level.first_tick, quantity_to_trade, order)
    else:
        (quantity_to_trade, proposed_trades) = self._search_for_quantity_in_order_book_partial(price, price_level, quantity_to_trade, order)
    return (quantity_to_trade, proposed_trades)
