Java: make JSON deserialization work with non-public constructors