Это не конструктор, и в имени метода нет пробела.
Метод называется and
, он принимает в качестве аргумента объект Bits
и возвращает объект Bits
.
Это обычный метод, для которого нет конкретного имени (с точки зрения языка).
Это общий шаблон, обычно используемый для неизменяемых объектов: вместо изменения объекта, для которого вызывается метод, создается новый объект с измененным состоянием (это также можно сделать с изменяемыми объектами, но чаще используется с неизменные).