code: static <T> PojoSerializerSnapshotData<T> createFrom(
  			Class<T> pojoClass,
  			Field[] fields,
  			TypeSerializer<?>[] fieldSerializers,
  			LinkedHashMap<Class<?>, TypeSerializer<?>> registeredSubclassSerializers,
  			Map<Class<?>, TypeSerializer<?>> nonRegisteredSubclassSerializers) {
  
  		final LinkedOptionalMap<Field, TypeSerializerSnapshot<?>> fieldSerializerSnapshots = new LinkedOptionalMap<>(fields.length);
  
  		for (int i = 0; i < fields.length; i++) {
  			Field field = fields[i];
  			String fieldName = (field == null) ? getDummyNameForMissingField(i) : field.getName();
  			fieldSerializerSnapshots.put(fieldName, field, TypeSerializerUtils.snapshotBackwardsCompatible(fieldSerializers[i]));
  		}
  
  		LinkedHashMap<Class<?>, TypeSerializerSnapshot<?>> registeredSubclassSerializerSnapshots = new LinkedHashMap<>(registeredSubclassSerializers.size());
  		registeredSubclassSerializers.forEach((k, v) -> registeredSubclassSerializerSnapshots.put(k, TypeSerializerUtils.snapshotBackwardsCompatible(v)));
  
  		Map<Class<?>, TypeSerializerSnapshot<?>> nonRegisteredSubclassSerializerSnapshots = new HashMap<>(nonRegisteredSubclassSerializers.size());
  		nonRegisteredSubclassSerializers.forEach((k, v) -> nonRegisteredSubclassSerializerSnapshots.put(k, TypeSerializerUtils.snapshotBackwardsCompatible(v)));
  
  		return new PojoSerializerSnapshotData<>(
  			pojoClass,
  			fieldSerializerSnapshots,
  			optionalMapOf(registeredSubclassSerializerSnapshots, Class::getName),
  			optionalMapOf(nonRegisteredSubclassSerializerSnapshots, Class::getName));
  	}
docs: Creates a {@link PojoSerializerSnapshotData} from configuration of a {@link PojoSerializer}.
  
  <p>This factory method is meant to be used in regular write paths, i.e. when taking a snapshot
  of the {@link PojoSerializer}. All registered subclass classes, and non-registered
  subclass classes are all present. Some POJO fields may be absent, if the originating
  {@link PojoSerializer} was a restored one with already missing fields, and was never replaced
  by a new {@link PojoSerializer} (i.e. because the serialized old data was never accessed).