Вы передаете в метод объект (по ссылке). Передача по ссылке подразумевает передачу ссылки на объект. В этом случае реализация метода потенциально может модифицировать переданный объект (например, вызвав метод, изменяющий состояние объекта).
Не буду гадать, но у Вас в методе Start(...), после метода check() идет конструкция s1 = s1.gener(), мне кажется она и меняет состояние ваших объектов.
Может я что-то пропустил, но я не нашел метода "check(s1)", а в указанном выше методе check(site s1, site s2) нет никакого присваивания, я даже не нашел конструкцию "s1.smth",