code: private List<? extends ArtifactStore> getRemoteStores( final ReplicationDTO dto )
          throws IndyWorkflowException
      {
          final String apiUrl = dto.getApiUrl();
  
          String remotesUrl = null;
          String groupsUrl = null;
          String hostedUrl = null;
          try
          {
              remotesUrl = buildUrl( apiUrl, "/admin/remotes" );
              groupsUrl = buildUrl( apiUrl, "/admin/groups" );
              hostedUrl = buildUrl( apiUrl, "/admin/hosted" );
          }
          catch ( final MalformedURLException e )
          {
              throw new IndyWorkflowException(
                                                "Failed to construct store definition-retrieval URL from api-base: {}. Reason: {}",
                                                e, apiUrl, e.getMessage() );
          }
  
          //        logger.info( "\n\n\n\n\n[AutoProx] Checking URL: {} from:", new Throwable(), url );
          final List<ArtifactStore> result = new ArrayList<ArtifactStore>();
  
          addStoresFrom( result, remotesUrl, dto, RemoteRepository.class );
          addStoresFrom( result, groupsUrl, dto, Group.class );
          addStoresFrom( result, hostedUrl, dto, HostedRepository.class );
  
          return result;
      }
docs: FIXME: Find a better solution to the passed-in generic deserialization problem...erasure is a mother...