@SuppressWarnings("unchecked") private <S, D> void propertyMap(Mapping mapping, MappingContextImpl<S, D> context) { MappingImpl mappingImpl = (MappingImpl) mapping; if (context.isShaded(mappingImpl.getPath())) return; Condition<Object, Object> condition = (Condition<Object, Object>) mapping.getCondition(); if (condition == null) condition = (Condition<Object, Object>) context.getTypeMap().getPropertyCondition(); if (condition == null && mapping.isSkipped()) return; Object source = resolveSourceValue(context, mapping); MappingContextImpl<Object, Object> propertyContext = propertyContextFor(context, source, mapping); if (condition != null) { if (!condition.applies(propertyContext)) { context.shadePath(mappingImpl.getPath()); return; } else if (mapping.isSkipped()) return; } Converter<Object, Object> converter = (Converter<Object, Object>) mapping.getConverter(); if (converter == null) converter = (Converter<Object, Object>) context.getTypeMap().getPropertyConverter(); if (converter != null) context.shadePath(mappingImpl.getPath()); else if (mapping instanceof SourceMapping) return; // Create destination for property context prior to mapping/conversion createDestinationViaProvider(propertyContext); // Set mapped/converted destination value setDestinationValue(context, propertyContext, mappingImpl, converter); }