### Question:
Lens { protected Lens(PLens<S, S, A, A> delegate) { this.delegate = checkNonNull(delegate); } protected  Lens(PLens<S, S, A, A> delegate); static Lens<S, A> of(Function1<S, A> getter, Function2<S, A, S> setter); A get(S target); S set(S target, A value); Function1<A, S> set(S target); Operator1<S> modify(Operator1<A> mapper); Operator1<S> modify(A newValue); Optional<S, A> asOptional(); Lens<S, B> compose(Lens<A, B> other); Optional<S, B> compose(Optional<A, B> other); Lens<S, B> compose(Iso<A, B> other); Optional<S, B> compose(Prism<A, B> other);  }### Answer:
@Test public void lensTest() { assertAll( () -> assertEquals(pepe.getName(), nameLens.get(pepe)), () -> assertEquals(paco, nameLens.set(pepe, paco.getName())), () -> assertEquals(madrid.getCity(), cityAddressLens.get(pepe)), () -> assertEquals(pepe.withAddress(alicante), cityAddressLens.set(pepe, alicante.getCity())) ); }