}
@Override
@Nonnull
public T deserialize( @Nonnull JsonParser parser ) throws IOException, JsonProcessingException, InvalidTypeException {
JacksonParserWrapper wrapper = new JacksonParserWrapper( parser );
Version version;
if ( isObjectType() ) {
wrapper.nextToken( JsonToken.START_OBJECT );
beforeTypeAndVersion( wrapper );
wrapper.nextFieldValue( PROPERTY_TYPE );
String readType = parser.getText();
verifyType( readType );
wrapper.nextFieldValue( PROPERTY_VERSION );
version = Version.parse( parser.getText() );
verifyVersionReadable( version );
} else {
parser.nextToken();
version = getFormatVersion();