code: public Literal literal(final String name, final boolean phase) {
      if (phase)
        return this.variable(name);
      else {
        Literal lit = this.negLiterals.get(name);
        if (lit == null) {
          lit = new Literal(name, false, this);
          this.negLiterals.put(name, lit);
        }
        return lit;
      }
    }
docs: Creates a new literal instance with a given name and phase.
  <p>
  Literal names should not start with {@code @RESERVED} - these are reserved for internal literals.
  @param name  the literal name
  @param phase the literal phase
  @return a new literal with the given name and phase