code: public String create( JClassType interfaceClass ) throws UnableToCompleteException {
          // We concatenate the name of all the enclosing class.
          StringBuilder builder = new StringBuilder( interfaceClass.getSimpleSourceName() + "Impl" );
          JClassType enclosingType = interfaceClass.getEnclosingType();
          while ( null != enclosingType ) {
              builder.insert( 0, enclosingType.getSimpleSourceName() + "_" );
              enclosingType = enclosingType.getEnclosingType();
          }
  
          String mapperClassSimpleName = builder.toString();
          String packageName = interfaceClass.getPackage().getName();
          String qualifiedMapperClassName = packageName + "." + mapperClassSimpleName;
  
          PrintWriter printWriter = getPrintWriter( packageName, mapperClassSimpleName );
          // The class already exists, no need to continue.
          if ( printWriter == null ) {
              return qualifiedMapperClassName;
          }
  
          try {
              // Extract the type of the object to map.
              JClassType mappedTypeClass = extractMappedType( interfaceClass );
  
              boolean reader = typeOracle.isObjectReader( interfaceClass );
              boolean writer = typeOracle.isObjectWriter( interfaceClass );
              Class<?> abstractClass;
              if ( reader ) {
                  if ( writer ) {
                      abstractClass = AbstractObjectMapper.class;
                  } else {
                      abstractClass = AbstractObjectReader.class;
                  }
              } else {
                  abstractClass = AbstractObjectWriter.class;
              }
  
              TypeSpec.Builder mapperBuilder = TypeSpec.classBuilder( mapperClassSimpleName )
                      .addModifiers( Modifier.PUBLIC, Modifier.FINAL )
                      .addSuperinterface( typeName( interfaceClass ) )
                      .superclass( parameterizedName( abstractClass, mappedTypeClass ) )
                      .addMethod( buildConstructor( mappedTypeClass ) );
  
              if ( reader ) {
                  mapperBuilder.addMethod( buildNewDeserializerMethod( mappedTypeClass ) );
              }
  
              if ( writer ) {
                  mapperBuilder.addMethod( buildNewSerializerMethod( mappedTypeClass ) );
              }
  
              write( packageName, mapperBuilder.build(), printWriter );
          } finally {
              printWriter.close();
          }
  
          return qualifiedMapperClassName;
      }
docs: Creates the implementation of the interface denoted by interfaceClass and extending {@link ObjectMapper}
  
  @param interfaceClass the interface to generate an implementation
  @return the fully qualified name of the created class
  @throws com.google.gwt.core.ext.UnableToCompleteException if any.