class ReflectiveObjectEncoder implements ObjectEncoder<Object> {

  @Override
  public void encode(@NonNull Object obj, @NonNull ObjectEncoderContext ctx) throws IOException {

    @SuppressWarnings("unchecked")
    ObjectEncoder<Object> encoder = getEncoder((Class<Object>) obj.getClass());
    encoder.encode(obj, ctx);
  }

  private  ReflectiveObjectEncoder(ObjectEncoderProvider provider, boolean threadSafe);
  public  ReflectiveObjectEncoder(boolean threadSafe);

}