code: private <P> void mergeDescriptorWithSuperClass(Class<P> pojoClass, PojoDescriptorImpl<P> descriptor) {
  
      // create descriptor for super-class to reuse information (#55)
      Class<? super P> superClass = pojoClass.getSuperclass();
      PojoDescriptorImpl<?> superDescriptor = null;
      if (superClass != null) {
        GenericType<?> superType = getReflectionUtil().createGenericType(superClass, descriptor.getPojoType());
        superDescriptor = createDescriptor(superType);
        for (PojoPropertyDescriptorImpl superPropertyDescriptor : superDescriptor.getPropertyDescriptors()) {
          PojoPropertyDescriptorImpl propertyDescriptor = descriptor.getPropertyDescriptor(superPropertyDescriptor.getName());
          if (propertyDescriptor == null) {
            descriptor.addPropertyDescriptor(superPropertyDescriptor);
          } else {
            mergePropertyDescriptorWithSuperClass(propertyDescriptor, superPropertyDescriptor);
          }
        }
      }
    }
docs: This method creates the {@link PojoDescriptorImpl} for the {@link Class#getSuperclass() superclass} of
  {@code pojoClass} and merges {@link PojoPropertyDescriptorImpl} from inherited properties.
  
  @param <P> is the generic type of {@code pojoClass}.
  @param pojoClass is the {@link Class} for the {@link PojoDescriptorImpl#getPojoType() pojo type}.
  @param descriptor is the {@link PojoDescriptorImpl} to merge.