Adds missing constructor properties

Previous investigations of how Gson works (in another PR) showed that, as Zack points, if the annotation is not present, the default Gson impl will be used to build the deserialized object. If there is no default constructor and the fields are final, an impl that uses sun.misc.Unsafe will be used to set the values directly in memory. We should avoid falling back to it, as that might not be available in all JVM implementations.