}
public void linkShadowSources(DescriptorPolicy descriptorPolicy) {
CustomShadowVariable shadowVariableAnnotation = variablePropertyAccessor.getReadMethod()
.getAnnotation(CustomShadowVariable.class);
SolutionDescriptor solutionDescriptor = entityDescriptor.getSolutionDescriptor();
CustomShadowVariable.Source[] sources = shadowVariableAnnotation.sources();
for (CustomShadowVariable.Source source : sources) {
EntityDescriptor sourceEntityDescriptor;
Class<?> sourceEntityClass = source.entityClass();
if (sourceEntityClass.equals(CustomShadowVariable.Source.NullEntityClass.class)) {
sourceEntityDescriptor = entityDescriptor;
} else {
sourceEntityDescriptor = solutionDescriptor.findEntityDescriptor(sourceEntityClass);
if (sourceEntityDescriptor == null) {
throw new IllegalArgumentException("The entityClass (" + entityDescriptor.getEntityClass()
+ ") has a " + CustomShadowVariable.class.getSimpleName()
+ " annotated property (" + variablePropertyAccessor.getName()
+ ") with a sourceEntityClass (" + sourceEntityClass