public EnhancedReport validate(
      String msg, String profile, String constraints, String vs, String id, Context context)
      throws Exception {

    String content = Util.streamAsString(msg);
    String pr = Util.streamAsString(profile);
    Report r = Validation.validate(profile, constraints, vs, content, id);
    String ctx = "";
    ArrayList<Section> mds = new ArrayList<Section>();
    mds.add(service);
    if (context == Context.Free) ctx = "Context-Free";
    else ctx = "Context-Based";
    return EnhancedReport.fromValidation(r, content, pr, id, mds, ctx);
  }
  public EnhancedReport validate(
      String msg,
      String profile,
      ArrayList<String> constraints,
      String vs,
      String id,
      Context context)
      throws Exception {

    // Extract Profile
    String pr = Util.streamAsString(profile);

    // Conf
    List<InputStream> l = new ArrayList<InputStream>();
    for (String s : constraints) {
      InputStream contextXML = ValidationProxy.class.getResourceAsStream(s);
      l.add(contextXML);
    }
    ConformanceContext c = DefaultConformanceContext.apply(l).get();

    // VS
    InputStream vsXML = ValidationProxy.class.getResourceAsStream(vs);
    ValueSetLibrary valueSetLibrary = ValueSetLibraryImpl.apply(vsXML).get();

    return this.validate(msg, pr, c, valueSetLibrary, id, context);
  }