code: @Override
      public String getUserFacingMessage() {
          final StringBuilder bldr = new StringBuilder();
  
          bldr.append("SEMANTIC FAILURE");
  
          final String name = getName();
          if (name != null) {
              bldr.append(" in ");
              bldr.append(name);
          }
  
          bldr.append("\n\treason: ");
          final String msg = getMessage();
          if (msg != null)
              bldr.append(msg);
          else
              bldr.append("Unknown");
          bldr.append("\n");
  
          if (causes != null) {
              for (final SemanticWarning se : causes) {
                  String[] userMsg = se.getUserFacingMessage().split("\n");
                  for (final String s : userMsg) {
                      bldr.append("\n\t");
                      bldr.append(s);
                  }
              }
              return bldr.toString();
          }
          bldr.append(getCause());
          return bldr.toString();
      }
docs: {@inheritDoc}