code: private JClassType extractMappedType( JClassType interfaceClass ) throws UnableToCompleteException {
          JClassType intf = interfaceClass.isInterface();
          if ( intf == null ) {
              logger.log( TreeLogger.Type.ERROR, "Expected " + interfaceClass + " to be an interface." );
              throw new UnableToCompleteException();
          }
  
          JClassType[] intfs = intf.getImplementedInterfaces();
          for ( JClassType t : intfs ) {
              if ( t.getQualifiedSourceName().equals( OBJECT_MAPPER_CLASS ) ) {
                  return extractParameterizedType( OBJECT_MAPPER_CLASS, t.isParameterized() );
              } else if ( t.getQualifiedSourceName().equals( OBJECT_READER_CLASS ) ) {
                  return extractParameterizedType( OBJECT_READER_CLASS, t.isParameterized() );
              } else if ( t.getQualifiedSourceName().equals( OBJECT_WRITER_CLASS ) ) {
                  return extractParameterizedType( OBJECT_WRITER_CLASS, t.isParameterized() );
              }
          }
          logger.log( TreeLogger.Type.ERROR, "Expected  " + interfaceClass + " to extend one of the following interface : " +
                  OBJECT_MAPPER_CLASS + ", " + OBJECT_READER_CLASS + " or " + OBJECT_WRITER_CLASS );
          throw new UnableToCompleteException();
      }
docs: Extract the type to map from the interface.
  
  @param interfaceClass the interface
  
  @return the extracted type to map
  @throws UnableToCompleteException if we don't find the type