code: public static String computeAttrString( final String    attrString,
                                              final Map<String, ? extends Object> attributes )
      {
          return computeAttrString( attrString, attributes, true, null );
      }
docs: Return a variable substituted string, but if a value hasn't been
  specified, then leave take out the ${variable} part and leave it
  blank/empty/null.
  
  @param attrString to use
  @param attributes to check for and substitute
  @return substituted string