code: private void processLocalComponentClass(LocalComponents localComponents,
        TypeElement localComponentType) {
  
      String localComponentTagName;
      try {
        localComponentTagName = componentToTagName(localComponentType);
      } catch (MissingComponentAnnotationException e) {
        e.printStackTrace();
        messager.printMessage(Kind.ERROR,
            "Missing @Component or @JsComponent annotation on imported component: "
                + localComponentType.toString(), localComponentType);
        return;
      }
  
      if (localComponents.hasLocalComponent(localComponentTagName)) {
        return;
      }
  
      LocalComponent localComponent = localComponents
          .addLocalComponent(localComponentTagName, localComponentType.asType());
  
      ElementFilter.fieldsIn(localComponentType.getEnclosedElements()).forEach(field -> {
        Prop propAnnotation = field.getAnnotation(Prop.class);
        if (propAnnotation != null) {
          localComponent.addProp(field.getSimpleName().toString(),
              TypeName.get(field.asType()),
              propAnnotation.required());
        }
      });
    }
docs: Register the local component and all of its {@link Prop}. This will be used for type
  validation.
  
  @param localComponents The {@link LocalComponents} object where we should register our {@link
  LocalComponent}
  @param localComponentType The class to process