public void preRender(KMLTraversalContext tc, DrawContext dc) {
    // If the attributes are not inline or internal then they might not be resolved until the
    // external KML
    // document is resolved. Therefore check to see if resolution has occurred.

    if (this.isHighlighted()) {
      if (!this.highlightAttributesResolved) {
        ShapeAttributes a = this.getHighlightAttributes();
        if (a == null || a.isUnresolved()) {
          a = this.makeAttributesCurrent(KMLConstants.HIGHLIGHT);
          if (a != null) {
            this.setHighlightAttributes(a);
            if (!a.isUnresolved()) this.highlightAttributesResolved = true;
          }
        }
      }
    } else {
      if (!this.normalAttributesResolved) {
        ShapeAttributes a = this.getAttributes();
        if (a == null || a.isUnresolved()) {
          a = this.makeAttributesCurrent(KMLConstants.NORMAL);
          if (a != null) {
            this.setAttributes(a);
            if (!a.isUnresolved()) this.normalAttributesResolved = true;
          }
        }
      }
    }

    this.preRender(dc);
  }