sclass BackgroundPlus is RenderableWithHints {
  RGB background;
  new L things;
  
  settable Pt preferredSize = new(640, 480);
  
  selfType preferredSize(int w, int h) { ret preferredSize(pt(w, h)); }
  
  *() {}
  *(RGB *background, A... things) { this.things = asList(things); }
  *(RGB *background, L *things) {}
  *(Color background, A... things) { this.background = RGB(background); this.things = asList(things); }
  *(Color background, L *things) { this.background = RGB(background); }
  *(int w, int h, Color background, A... things) {
    this(background, things);
    preferredSize(w, h);
  }
  
  public void renderOn(Graphics2D g, int w, int h) {
    fillRect(g, 0, 0, w, h, toColor(background));
    for (A a : things)
      a/Renderable.renderOn(g, w, h);
  }
  
  public void renderHints(Graphics2D g, int w, int h) {
    renderOn(g, w, h);
    for (A a : things)
      if (a instanceof RenderableWithHints)
        a/RenderableWithHints.renderHints(g, w, h);
  }
}