if (realField != null) switch (serializableField.getKind()) {
case BOOLEAN: map.put(name, new BooleanReadField(serializableField, realField.getBoolean(subject))); continue;
case BYTE: map.put(name, new ByteReadField(serializableField, realField.getByte(subject))); continue;
case CHAR: map.put(name, new CharReadField(serializableField, realField.getChar(subject))); continue;
case DOUBLE: map.put(name, new DoubleReadField(serializableField, realField.getDouble(subject))); continue;
case FLOAT: map.put(name, new FloatReadField(serializableField, realField.getFloat(subject))); continue;
case INT: map.put(name, new IntReadField(serializableField, realField.getInt(subject))); continue;
case LONG: map.put(name, new LongReadField(serializableField, realField.getLong(subject))); continue;
case OBJECT: map.put(name, new ObjectReadField(serializableField, realField.get(subject))); continue;
case SHORT: map.put(name, new ShortReadField(serializableField, realField.getShort(subject))); continue;
default: throw new IllegalStateException();