code: protected List<Shape> getAvoidList (Name speaker)
      {
          List<Shape> avoid = Lists.newArrayList();
          if (_provider == null) {
              return avoid;
          }
  
          // for now we don't accept low-priority avoids
          _provider.getAvoidables(speaker, avoid, null);
  
          // add the existing chatbub non-tail areas from other speakers
          for (BubbleGlyph bub : _bubbles) {
              if (!bub.isSpeaker(speaker)) {
                  avoid.add(bub.getBubbleTerritory());
              }
          }
  
          return avoid;
      }
docs: Return a list of rectangular areas that we should avoid while laying out a bubble for the
  specified speaker.