public static String describeBinding(
     String prefix, ElementDefinitionBindingComponent def, PageProcessor page) throws Exception {
   if (!def.hasValueSet()) return def.getDescription();
   String ref =
       def.getValueSet() instanceof UriType
           ? ((UriType) def.getValueSet()).asStringValue()
           : ((Reference) def.getValueSet()).getReference();
   ValueSet vs = page.getValueSets().get(ref);
   if (vs != null) {
     String pp = (String) vs.getUserData("path");
     return def.getDescription()
         + "<br/>"
         + conf(def)
         + "<a href=\""
         + prefix
         + pp.replace(File.separatorChar, '/')
         + "\">"
         + vs.getName()
         + "</a>"
         + confTail(def);
   }
   if (ref.startsWith("http:") || ref.startsWith("https:"))
     return def.getDescription()
         + "<br/>"
         + conf(def)
         + " <a href=\""
         + ref
         + "\">"
         + ref
         + "</a>"
         + confTail(def);
   else
     return def.getDescription()
         + "<br/>"
         + conf(def)
         + " ?? Broken Reference to "
         + ref
         + " ??"
         + confTail(def);
 }