### Question:
Options implements ProtoObject<KeyValueSetProto>, Cloneable, GsonObject { @Override public KeyValueSetProto getProto() { if (builder == null) { builder = KeyValueSetProto.newBuilder(); } else { builder.clear(); } KeyValueProto.Builder kvBuilder; if(this.keyVals != null) { for(Entry<String,String> kv : keyVals.entrySet()) { kvBuilder = KeyValueProto.newBuilder(); kvBuilder.setKey(kv.getKey()); kvBuilder.setValue(kv.getValue()); builder.addKeyval(kvBuilder.build()); } } return builder.build(); } Options();  Options(KeyValueSetProto proto);  Options(Options options); static Options create(); static Options create(Options options); int size(); void put(String key, String val); void putAll(Map<String, String> keyValues); void putAll(Options options); String get(String key); String get(String key, String defaultVal); Map<String,String> getAllKeyValus(); String delete(String key); @Override int hashCode(); @Override boolean equals(Object object); @Override Object clone(); @Override KeyValueSetProto getProto(); String toJson();  }### Answer:
@Test public final void testGetProto() { Options opts = new Options(); opts.put("name", "abc"); opts.put("delimiter", ","); KeyValueSetProto proto = opts.getProto(); Options opts2 = new Options(proto); assertEquals(opts, opts2); }