code: protected ISynchronizationPoint<? extends Exception> specifyObjectValue(
  		SerializationContext context, TypeDefinition typeDef, List<SerializationRule> rules
  	) {
  		ObjectContext ctx;
  		try {
  			Class<?> type = typeDef.getBase();
  			SerializationClass sc = new SerializationClass(TypeDefinition.from(type, typeDef));
  			ctx = new ObjectContext(context, null, sc, typeDef);
  			rules = addRulesForType(sc, rules);
  			sc.apply(rules, ctx, true);
  		} catch (Exception e) {
  			return new SynchronizationPoint<>(e);
  		}
  		return specifyTypedValue(ctx, rules);
  	}
docs: *** object ***