code: @Override
      protected final void buildSpecific( TypeSpec.Builder typeBuilder ) throws UnableToCompleteException {
  
          if ( !properties.isEmpty() ) {
              if ( beanInfo.getValuePropertyInfo().isPresent() ) {
                  typeBuilder.addMethod( buildInitValueSerializerMethod( beanInfo.getValuePropertyInfo().get() ) );
              } else {
                  Map<PropertyInfo, JSerializerType> propertiesMap = new LinkedHashMap<PropertyInfo, JSerializerType>();
                  for ( PropertyInfo propertyInfo : properties.values() ) {
                      JSerializerType serializerType = getJsonSerializerFromProperty( propertyInfo );
                      if ( null != serializerType ) {
                          propertiesMap.put( propertyInfo, serializerType );
                      }
                  }
                  if ( !propertiesMap.isEmpty() ) {
                      typeBuilder.addMethod( buildInitSerializersMethod( propertiesMap ) );
                  }
              }
          }
  
          if ( beanInfo.getAnyGetterPropertyInfo().isPresent() ) {
              typeBuilder.addMethod( buildInitAnyGetterPropertySerializerMethod( beanInfo.getAnyGetterPropertyInfo().get() ) );
          }
  
          if ( beanInfo.getIdentityInfo().isPresent() ) {
              try {
                  Optional<JSerializerType> serializerType = getIdentitySerializerType( beanInfo.getIdentityInfo().get() );
                  typeBuilder.addMethod( buildInitIdentityInfoMethod( serializerType ) );
              } catch ( UnsupportedTypeException e ) {
                  logger.log( Type.WARN, "Identity type is not supported. We ignore it." );
              }
          }
  
          if ( beanInfo.getTypeInfo().isPresent() ) {
              typeBuilder.addMethod( buildInitTypeInfoMethod() );
          }
  
          ImmutableList<JClassType> subtypes = filterSubtypes();
          if ( !subtypes.isEmpty() ) {
              typeBuilder.addMethod( buildInitMapSubtypeClassToSerializerMethod( subtypes ) );
          }
      }
docs: {@inheritDoc}