extend FiledownLoader => java.lang.RuntimeException: ResourceReference does

Hi, I am trying to extend FileDownloader to allow the resource to be generated after the FileDownloader was extended to button.
But I am getting this exception:
java.lang.RuntimeException: ResourceReference does not support resources of type

Here is my code:

import com.vaadin.server.DownloadStream;
import com.vaadin.server.FileDownloader;
import com.vaadin.server.Resource;
import com.vaadin.server.StreamResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinResponse;
import com.vaadin.server.VaadinSession;
import java.io.IOException;

public class DynamicFileDownloader extends FileDownloader
{

private DynamicDownloadListener dynamicDownloadListener;

public DynamicFileDownloader()
{
  super(new Resource()
  {
     @Override
     public String getMIMEType()
     {
        return "pdf";
     }
  });
}

public void addDynamicDownloadListener(DynamicDownloadListener listener)
{
  dynamicDownloadListener = listener;
}

public void setResource(StreamResource resource)
{
   super.setResource("stream", resource);
}

@Override
public boolean handleConnectorRequest(VaadinRequest request,
     VaadinResponse response, String path) throws IOException
{
  VaadinSession session = getSession();

  session.lock();
  dynamicDownloadListener.beforeDownload();

  DownloadStream stream;

  try
  {
     Resource resource = super.getResource("stream");

     stream = ((StreamResource) resource).getStream();

  } finally
  {
     session.unlock();
  }
   stream.writeResponse(request, response);
   return true;
}

public interface DynamicDownloadListener
{
   public void beforeDownload();
}
 }

HOW TO USE:

DynamicFileDownloader dynamicFileDownloader = new DynamicFileDownloader();
  dynamicFileDownloader.addDynamicDownloadListener(() -> {
     try
     {
        // make resource from user input
        dynamicFileDownloader.setResource(resource);
     } catch (ValidationException | IOException e1)
     {
        
     }
  });
  
  dynamicFileDownloader.extend(window.getButtonDownload());

You seem to have found the solution, I just link it here, in case someone else finds this question:

https://stackoverflow.com/questions/50758101/vaadin-8-extend-filedownloader