The method is called and, it takes a Bits object as the argument and it returns a Bits object.

It's a normal method with there's no particular name for this (from the language perspective).

It's a common pattern, usually used for immutable objects: instead of modifying the object on which the method is called, a new object is created with the modified state (this can also be done on mutable objects, but is more common with immutable ones).