// Path: geth-connector/src/main/java/com/jaeckel/geth/json/EthSyncingResultAdapter.java
// public class EthSyncingResultAdapter {
// 
//     @ToJson
//     EthSyncingResultJson toJson(@FalseToNull EthSyncingResult in) {
//         EthSyncingResultJson out = new EthSyncingResultJson();
//         out.currentBlock = in.currentBlock;
//         out.highestBlock = in.highestBlock;
//         out.knownStates = in.knownStates;
//         out.pulledStates = in.pulledStates;
//         out.startingBlock = in.startingBlock;
//         return out;
//     }
// 
//     @FromJson
//     @FalseToNull
//     EthSyncingResult fromJson(EthSyncingResultJson in) {
//         EthSyncingResult result = new EthSyncingResult();
//         result.currentBlock = in.currentBlock;
//         result.highestBlock = in.highestBlock;
//         result.knownStates = in.knownStates;
//         result.pulledStates = in.pulledStates;
//         result.startingBlock = in.startingBlock;
//         return result;
//     }
// }
// 
// Path: geth-connector/src/main/java/com/jaeckel/geth/json/FalseToNullFactory.java
// public final class FalseToNullFactory implements JsonAdapter.Factory {
// 
//     @Retention(RetentionPolicy.RUNTIME)
//     @JsonQualifier
//     public @interface FalseToNull {
//     }
// 
//     @Override
//     public JsonAdapter<?> create(Type type, Set<? extends Annotation> annotations, Moshi moshi) {
//         for (Annotation annotation : annotations) {
//             if (annotation instanceof FalseToNull) {
//                 JsonAdapter<Object> delegate = moshi.nextAdapter(this, type, annotations);
//                 return new FalseToNullAdapter<>(delegate);
//             }
//         }
//         return null;
//     }
// 
//     static class FalseToNullAdapter<T> extends JsonAdapter<T> {
//         private final JsonAdapter<T> delegate;
// 
//         FalseToNullAdapter(JsonAdapter<T> delegate) {
//             this.delegate = delegate;
//         }
// 
//         @Override
//         public T fromJson(JsonReader reader) throws IOException {
//             if (reader.peek() == JsonReader.Token.BOOLEAN) {
//                 if (reader.nextBoolean()) {
//                     throw new IllegalStateException("Expected false or object.");
//                 }
//                 return null;
//             }
//             return delegate.fromJson(reader);
//         }
// 
//         @Override
//         public void toJson(JsonWriter writer, T value) throws IOException {
//             delegate.toJson(writer, value);
//         }
//     }
// }
// 
// Path: geth-connector/src/main/java/com/jaeckel/geth/json/HexAdapter.java
// public class HexAdapter {
//     @ToJson
//     String toJson(@Hex long number) {
//         return String.format("0x%x", number);
//     }
// 
//     @Hex
//     @FromJson
//     long fromJson(String hexString) {
//         return Long.parseLong(hexString.substring(2), 16);
//     }
// }


import com.jaeckel.geth.json.EthSyncingResultAdapter;
import com.jaeckel.geth.json.FalseToNullFactory;
import com.jaeckel.geth.json.HexAdapter;
import com.squareup.moshi.Moshi;
package com.jaeckel.geth;


public class MoshiFactory {

    public static Moshi createMoshi() {
        return new Moshi.Builder()
// Path: geth-connector/src/main/java/com/jaeckel/geth/json/EthSyncingResultAdapter.java
// public class EthSyncingResultAdapter {
// 
//     @ToJson
//     EthSyncingResultJson toJson(@FalseToNull EthSyncingResult in) {
//         EthSyncingResultJson out = new EthSyncingResultJson();
//         out.currentBlock = in.currentBlock;
//         out.highestBlock = in.highestBlock;
//         out.knownStates = in.knownStates;
//         out.pulledStates = in.pulledStates;
//         out.startingBlock = in.startingBlock;
//         return out;
//     }
// 
//     @FromJson
//     @FalseToNull
//     EthSyncingResult fromJson(EthSyncingResultJson in) {
//         EthSyncingResult result = new EthSyncingResult();
//         result.currentBlock = in.currentBlock;
//         result.highestBlock = in.highestBlock;
//         result.knownStates = in.knownStates;
//         result.pulledStates = in.pulledStates;
//         result.startingBlock = in.startingBlock;
//         return result;
//     }
// }
// 
// Path: geth-connector/src/main/java/com/jaeckel/geth/json/FalseToNullFactory.java
// public final class FalseToNullFactory implements JsonAdapter.Factory {
// 
//     @Retention(RetentionPolicy.RUNTIME)
//     @JsonQualifier
//     public @interface FalseToNull {
//     }
// 
//     @Override
//     public JsonAdapter<?> create(Type type, Set<? extends Annotation> annotations, Moshi moshi) {
//         for (Annotation annotation : annotations) {
//             if (annotation instanceof FalseToNull) {
//                 JsonAdapter<Object> delegate = moshi.nextAdapter(this, type, annotations);
//                 return new FalseToNullAdapter<>(delegate);
//             }
//         }
//         return null;
//     }
// 
//     static class FalseToNullAdapter<T> extends JsonAdapter<T> {
//         private final JsonAdapter<T> delegate;
// 
//         FalseToNullAdapter(JsonAdapter<T> delegate) {
//             this.delegate = delegate;
//         }
// 
//         @Override
//         public T fromJson(JsonReader reader) throws IOException {
//             if (reader.peek() == JsonReader.Token.BOOLEAN) {
//                 if (reader.nextBoolean()) {
//                     throw new IllegalStateException("Expected false or object.");
//                 }
//                 return null;
//             }
//             return delegate.fromJson(reader);
//         }
// 
//         @Override
//         public void toJson(JsonWriter writer, T value) throws IOException {
//             delegate.toJson(writer, value);
//         }
//     }
// }
// 
// Path: geth-connector/src/main/java/com/jaeckel/geth/json/HexAdapter.java
// public class HexAdapter {
//     @ToJson
//     String toJson(@Hex long number) {
//         return String.format("0x%x", number);
//     }
// 
//     @Hex
//     @FromJson
//     long fromJson(String hexString) {
//         return Long.parseLong(hexString.substring(2), 16);
//     }
// }


// Path: geth-connector/src/main/java/com/jaeckel/geth/MoshiFactory.java
import com.jaeckel.geth.json.EthSyncingResultAdapter;
import com.jaeckel.geth.json.FalseToNullFactory;
import com.jaeckel.geth.json.HexAdapter;
import com.squareup.moshi.Moshi;

package com.jaeckel.geth;


public class MoshiFactory {

    public static Moshi createMoshi() {
        return new Moshi.Builder()
                .add(new HexAdapter())