### Question:
SyncData implements com.github.zzt93.syncer.data.SyncData, Serializable { public void recycleParseContext(ThreadLocal<StandardEvaluationContext> contexts) { inner.context = null; } SyncData(DataId dataId, SimpleEventType type, String database, String entity, String primaryKeyName,
                  Object id, NamedChange row); private  SyncData(DataId dataId, SimpleEventType type, String database, String entity, String primaryKeyName, Object id,
                             HashMap<String, Object> full, HashMap<String, Object> beforeFull, Set<String> updated);  SyncData(SyncData syncData, int offset); @Override Object getId(); @Override SyncData setId(Object id); @Override String getEntity(); @Override SyncData setEntity(String entity); @Override boolean isWrite(); @Override boolean isUpdate(); @Override boolean isDelete(); @Override SyncData toWrite(); @Override SyncData toUpdate(); @Override SyncData toDelete(); @Override String getRepo(); @Override SyncData setRepo(String repo); @Override Object getExtra(String key); @Override com.github.zzt93.syncer.data.SyncData copyMeta(int index); @Override boolean updated(); @Override boolean updated(String key); @Override Set<String> getUpdated(); @Override Object getBefore(String key); @Override HashMap<String, Object> getBefore(); @Override SyncData addExtra(String key, Object value); SyncData addField(String key, Object value); @Override SyncData setFieldNull(String key); SyncData renameField(String oldKey, String newKey); Object removeField(String key); boolean removePrimaryKey(); SyncData removeFields(String... keys); boolean containField(String key); SyncData updateField(String key, Object value); StandardEvaluationContext getContext(); void setContext(StandardEvaluationContext context); void recycleParseContext(ThreadLocal<StandardEvaluationContext> contexts); @Override HashMap<String, Object> getFields(); @Override HashMap<String, Object> getExtras(); Object getField(String key); @Override Long getFieldAsLong(String key); @Override Integer getFieldAInt(String key); String getEventId(); DataId getDataId(); String getSourceIdentifier(); SyncData setSourceIdentifier(String identifier); HashMap<String, Object> getSyncBy(); SyncByQuery syncByQuery(); ESScriptUpdate esScriptUpdate(); @Override ESScriptUpdate esScriptUpdate(String script, Map<String, Object> params); @Override ESScriptUpdate esScriptUpdate(Filter docFilter); ESScriptUpdate getEsScriptUpdate(); ExtraQuery extraQuery(String indexName, String typeName); ExtraQueryContext getExtraQueryContext(); boolean hasExtra(); SimpleEventType getType(); SyncResult getResult(); SyncData copy(); Long getPartitionId(); void setPartitionField(String fieldName);  }### Answer:
@Test public void testToStringDefault() { SyncData write = SyncDataTestUtil.write("test", "test"); assertEquals("SyncData(inner=Meta{dataId=mysql-bin.00001/4/6/0, context=true, connectionIdentifier='null'}, syncByQuery=null, esScriptUpdate=null, result=SyncResult(super=SyncResultBase(super=SyncMeta(eventType=WRITE, repo=test, entity=test, id=1234, primaryKeyName=id), fields={}, extras=null, before=null)), updated=null, partitionField=null, extraQueryContext=null)", write.toString()); write.recycleParseContext(null); assertEquals("SyncData(inner=Meta{dataId=mysql-bin.00001/4/6/0, context=null, connectionIdentifier='null'}, syncByQuery=null, esScriptUpdate=null, result=SyncResult(super=SyncResultBase(super=SyncMeta(eventType=WRITE, repo=test, entity=test, id=1234, primaryKeyName=id), fields={}, extras=null, before=null)), updated=null, partitionField=null, extraQueryContext=null)", write.toString()); }