Bind 2 layers for building.
    When the upper layer is added as a payload of the lower layer, all the arguments  # noqa: E501
    will be applied to them.

    ex:
        >>> bind_top_down(Ether, SNAP, type=0x1234)
        >>> Ether()/SNAP()
        <Ether  type=0x1234 |<SNAP  |>>

def bind_top_down(lower, upper, __fval=None, **fval):
    """Bind 2 layers for building.
    When the upper layer is added as a payload of the lower layer, all the arguments  # noqa: E501
    will be applied to them.

    ex:
        >>> bind_top_down(Ether, SNAP, type=0x1234)
        >>> Ether()/SNAP()
        <Ether  type=0x1234 |<SNAP  |>>
    """
    if __fval is not None:
        fval.update(__fval)
    upper._overload_fields = upper._overload_fields.copy()
    upper._overload_fields[lower] = fval