// Path: language-bindings/java/src/main/java/rx/redis/japi/format/BytesFormat.java
// public interface BytesFormat<T> extends BytesReader<T>, BytesWriter<T> {
// 
//   default <U> BytesFormat<U> xmap(final Function<T, U> f, final Function<U, T> g) {
//     return fromScala(this.asScala().xmap(func(f::apply), func(g::apply)));
//   }
// 
//   default <U> BytesFormat<U> xflatMap(final Function<T, U> f, final Function<U, Iterable<T>> g) {
//     final ByteBufFormat<U> xByteBufFormat = this.asScala().xflatMap(
//         func(f::apply),
//         func(x -> iterableAsScalaIterableConverter(g.apply(x)).asScala()));
//     return fromScala(xByteBufFormat);
//   }
// 
//   default <U> BytesPairFormat<T, U> and(final BytesFormat<U> f) {
//     return BytesPairFormat.fromScala(this.asScala().and(f.asScala()));
//   }
// 
//   // TODO: EitherFormat
//   default <U> BytesFormat<Either<T, U>> or(final BytesFormat<U> f) {
//     return fromScala(this.asScala().or(f.asScala()));
//   }
// 
//   default ByteBufFormat<T> asScala() {
//     return ByteBufFormat$.MODULE$.from(asScalaReader(), asScalaWriter());
//   }
// 
//   static <A> BytesFormat<A> fromScala(final ByteBufFormat<A> delegate) {
//     return new FromScalaFormat<>(delegate);
//   }
// 
//   static <A> BytesFormat<A> fromReaderAndWriter(final BytesReader<A> reader, final BytesWriter<A> writer) {
//     return new BytesFormat<A>() {
//       @Override
//       public A fromByteBuf(final ByteBuf bb) {
//         return reader.fromByteBuf(bb);
//       }
// 
//       @Override
//       public ByteBuf toByteBuf(final ByteBuf bb, final A value) {
//         return writer.toByteBuf(bb, value);
//       }
//     };
//   }
// 
//   final class FromScalaFormat<T> implements BytesFormat<T> {
//     private final ByteBufFormat<T> delegate;
// 
//     FromScalaFormat(final ByteBufFormat<T> delegate) {
//       this.delegate = Objects.requireNonNull(delegate, "delegate must not be null");
//     }
// 
//     @Override
//     public T fromByteBuf(final ByteBuf bb) {
//       return delegate.fromByteBuf(bb);
//     }
// 
//     @Override
//     public ByteBuf toByteBuf(final ByteBuf bb, final T value) {
//       return delegate.toByteBuf(bb, value);
//     }
// 
//     @Override
//     public ByteBufFormat<T> asScala() {
//       return delegate;
//     }
// 
//     @Override
//     public ByteBufReader<T> asScalaReader() {
//       return delegate;
//     }
// 
//     @Override
//     public ByteBufWriter<T> asScalaWriter() {
//       return delegate;
//     }
//   }
// }
// 
// Path: language-bindings/java/src/main/java/rx/redis/japi/DefaultBytes.java
// @SuppressWarnings("UnusedDeclaration")
// public final class DefaultBytes {
// 
//   private DefaultBytes() {}
// 
//   public final static BytesFormat<String> STRING =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatString());
// 
//   public final static BytesFormat<String> FRAMELESS_STRING =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatFramelessString());
// 
//   public final static BytesFormat<byte[]> BYTES =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatByteArray());
// 
//   public final static BytesFormat<byte[]> FRAMELESS_BYTES =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatFramelessByteArray());
// 
//   public final static BytesFormat<Integer> INT =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatInt()
//           .xmap(func(x -> (Integer) x), func(x -> x)));
// 
//   public final static BytesFormat<Long> LONG =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatLong()
//           .xmap(func(x -> (Long) x), func(x -> x)));
// }


import rx.redis.japi.format.BytesFormat;
import rx.redis.japi.DefaultBytes;
  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }

  @Override
  public boolean equals(final Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    final Person person = (Person) o;
    return age == person.age && name.equals(person.name);
  }

  @Override
  public int hashCode() {
    return 31 * name.hashCode() + age;
  }

  @Override
  public String toString() {
    return String.format("Person(%s, %d)", name, age);
  }

// Path: language-bindings/java/src/main/java/rx/redis/japi/format/BytesFormat.java
// public interface BytesFormat<T> extends BytesReader<T>, BytesWriter<T> {
// 
//   default <U> BytesFormat<U> xmap(final Function<T, U> f, final Function<U, T> g) {
//     return fromScala(this.asScala().xmap(func(f::apply), func(g::apply)));
//   }
// 
//   default <U> BytesFormat<U> xflatMap(final Function<T, U> f, final Function<U, Iterable<T>> g) {
//     final ByteBufFormat<U> xByteBufFormat = this.asScala().xflatMap(
//         func(f::apply),
//         func(x -> iterableAsScalaIterableConverter(g.apply(x)).asScala()));
//     return fromScala(xByteBufFormat);
//   }
// 
//   default <U> BytesPairFormat<T, U> and(final BytesFormat<U> f) {
//     return BytesPairFormat.fromScala(this.asScala().and(f.asScala()));
//   }
// 
//   // TODO: EitherFormat
//   default <U> BytesFormat<Either<T, U>> or(final BytesFormat<U> f) {
//     return fromScala(this.asScala().or(f.asScala()));
//   }
// 
//   default ByteBufFormat<T> asScala() {
//     return ByteBufFormat$.MODULE$.from(asScalaReader(), asScalaWriter());
//   }
// 
//   static <A> BytesFormat<A> fromScala(final ByteBufFormat<A> delegate) {
//     return new FromScalaFormat<>(delegate);
//   }
// 
//   static <A> BytesFormat<A> fromReaderAndWriter(final BytesReader<A> reader, final BytesWriter<A> writer) {
//     return new BytesFormat<A>() {
//       @Override
//       public A fromByteBuf(final ByteBuf bb) {
//         return reader.fromByteBuf(bb);
//       }
// 
//       @Override
//       public ByteBuf toByteBuf(final ByteBuf bb, final A value) {
//         return writer.toByteBuf(bb, value);
//       }
//     };
//   }
// 
//   final class FromScalaFormat<T> implements BytesFormat<T> {
//     private final ByteBufFormat<T> delegate;
// 
//     FromScalaFormat(final ByteBufFormat<T> delegate) {
//       this.delegate = Objects.requireNonNull(delegate, "delegate must not be null");
//     }
// 
//     @Override
//     public T fromByteBuf(final ByteBuf bb) {
//       return delegate.fromByteBuf(bb);
//     }
// 
//     @Override
//     public ByteBuf toByteBuf(final ByteBuf bb, final T value) {
//       return delegate.toByteBuf(bb, value);
//     }
// 
//     @Override
//     public ByteBufFormat<T> asScala() {
//       return delegate;
//     }
// 
//     @Override
//     public ByteBufReader<T> asScalaReader() {
//       return delegate;
//     }
// 
//     @Override
//     public ByteBufWriter<T> asScalaWriter() {
//       return delegate;
//     }
//   }
// }
// 
// Path: language-bindings/java/src/main/java/rx/redis/japi/DefaultBytes.java
// @SuppressWarnings("UnusedDeclaration")
// public final class DefaultBytes {
// 
//   private DefaultBytes() {}
// 
//   public final static BytesFormat<String> STRING =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatString());
// 
//   public final static BytesFormat<String> FRAMELESS_STRING =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatFramelessString());
// 
//   public final static BytesFormat<byte[]> BYTES =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatByteArray());
// 
//   public final static BytesFormat<byte[]> FRAMELESS_BYTES =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatFramelessByteArray());
// 
//   public final static BytesFormat<Integer> INT =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatInt()
//           .xmap(func(x -> (Integer) x), func(x -> x)));
// 
//   public final static BytesFormat<Long> LONG =
//       BytesFormat.fromScala(ByteBufFormat$.MODULE$.formatLong()
//           .xmap(func(x -> (Long) x), func(x -> x)));
// }


// Path: examples/java/src/main/java/com/example/Person.java
import rx.redis.japi.format.BytesFormat;
import rx.redis.japi.DefaultBytes;

  public String getName() {
    return name;
  }

  public int getAge() {
    return age;
  }

  @Override
  public boolean equals(final Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    final Person person = (Person) o;
    return age == person.age && name.equals(person.name);
  }

  @Override
  public int hashCode() {
    return 31 * name.hashCode() + age;
  }

  @Override
  public String toString() {
    return String.format("Person(%s, %d)", name, age);
  }

  public static final BytesFormat<Person> BYTES_FORMAT =