@SuppressWarnings({"unchecked", "rawtypes"}) public static GeneratorComponent<?> createGeneratorComponent( InstanceDescriptor descriptor, Uniqueness ownerUniqueness, BeneratorContext context) { if (descriptor instanceof ComponentDescriptor) return ComponentBuilderFactory.createComponentBuilder( (ComponentDescriptor) descriptor, ownerUniqueness, context); else if (descriptor instanceof VariableDescriptor) return new Variable( descriptor.getName(), VariableGeneratorFactory.createGenerator((VariableDescriptor) descriptor, context), descriptor.getTypeDescriptor().getScope()); else if (descriptor instanceof ArrayElementDescriptor) return ComponentBuilderFactory.createComponentBuilder( (ArrayElementDescriptor) descriptor, ownerUniqueness, context); else throw new UnsupportedOperationException( "Not a supported generator compnent type: " + descriptor.getClass()); }