@lombok.With class WithOnClass1 {
  @lombok.With(lombok.AccessLevel.NONE) boolean isNone;
  boolean isPublic;
  WithOnClass1(boolean isNone, boolean isPublic) {
    super();
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  public @java.lang.SuppressWarnings("all") WithOnClass1 withPublic(final boolean isPublic) {
    return ((this.isPublic == isPublic) ? this : new WithOnClass1(this.isNone, isPublic));
  }
}
@lombok.With(lombok.AccessLevel.PROTECTED) class WithOnClass2 {
  @lombok.With(lombok.AccessLevel.NONE) boolean isNone;
  boolean isProtected;
  @lombok.With(lombok.AccessLevel.PACKAGE) boolean isPackage;
  WithOnClass2(boolean isNone, boolean isProtected, boolean isPackage) {
    super();
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  @java.lang.SuppressWarnings("all") WithOnClass2 withPackage(final boolean isPackage) {
    return ((this.isPackage == isPackage) ? this : new WithOnClass2(this.isNone, this.isProtected, isPackage));
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  protected @java.lang.SuppressWarnings("all") WithOnClass2 withProtected(final boolean isProtected) {
    return ((this.isProtected == isProtected) ? this : new WithOnClass2(this.isNone, isProtected, this.isPackage));
  }
}
@lombok.With class WithOnClass3 {
  String couldBeNull;
  @lombok.NonNull String nonNull;
  WithOnClass3(String couldBeNull, String nonNull) {
    super();
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  public @java.lang.SuppressWarnings("all") WithOnClass3 withCouldBeNull(final String couldBeNull) {
    return ((this.couldBeNull == couldBeNull) ? this : new WithOnClass3(couldBeNull, this.nonNull));
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  public @java.lang.SuppressWarnings("all") WithOnClass3 withNonNull(final @lombok.NonNull String nonNull) {
    if ((nonNull == null))
        {
          throw new java.lang.NullPointerException("nonNull is marked non-null but is null");
        }
    return ((this.nonNull == nonNull) ? this : new WithOnClass3(this.couldBeNull, nonNull));
  }
}
@lombok.With @lombok.experimental.Accessors(prefix = "f") class WithOnClass4 {
  final int fX = 10;
  final int fY;
  WithOnClass4(int y) {
    super();
    this.fY = y;
  }
  /**
   * @return a clone of this object, except with this updated property (returns {@code this} if an identical value is passed).
   */
  public @java.lang.SuppressWarnings("all") WithOnClass4 withY(final int fY) {
    return ((this.fY == fY) ? this : new WithOnClass4(fY));
  }
}