@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());
 }