code: public Output compile(Context context) throws CompilationException {
      Objects.requireNonNull(context, "Parameter context must not be null");
  
      if (context instanceof FileContext) {
        return compile((FileContext) context);
      }
  
      if (context instanceof StringContext) {
        return compile((StringContext) context);
      }
  
      throw new UnsupportedContextException(context);
    }
docs: Compile context.
  
  @param context The context.
  @return The compilation output.
  @throws UnsupportedContextException If the given context is not supported.
  @throws CompilationException If the compilation failed.