class ValuePatch {

    public static <T> ValuePatch<T> ofOptional(Optional<T> value) {
        Preconditions.checkNotNull(value);
        return value.map(ValuePatch::modifyTo)
            .orElse(ValuePatch.remove());
    }

    private  ValuePatch(T value, State state);

}