// Path: cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java
// enum TokenType {
//   KEY,
//   SEPARATOR,
//   VALUE,
//   TRAILING_BACKSLASH,
//   EOL;
// }


import java.util.List;
import java.util.Map;
import ch.qos.cal10n.util.Token.TokenType;
import java.io.Reader;
      return;
    }
    switch (t.tokenType) {
    case EOL:
      break;
    case KEY:
      String k = t.getValue();
      t = getNextToken();
      if (t.tokenType != TokenType.SEPARATOR) {
        throw new IllegalStateException("Unexpected token " + t);
      }
      StringBuilder buf = new StringBuilder();
      V(buf);
      map.put(k, buf.toString());
      break;
    }
    E();
  }

  // V = v EOL | v '\' Vopt
  // Vopt = EOL V
  private void V(StringBuilder buf) {

    Token t = getNextToken();
    if (t.tokenType != TokenType.VALUE) {
      throw new IllegalStateException("Unexpected token " + t);
    }
    buf.append(t.getValue());

    t = getNextToken();
// Path: cal10n-api/src/main/java/ch/qos/cal10n/util/Token.java
// enum TokenType {
//   KEY,
//   SEPARATOR,
//   VALUE,
//   TRAILING_BACKSLASH,
//   EOL;
// }


// Path: cal10n-api/src/main/java/ch/qos/cal10n/util/Parser.java
import java.util.List;
import java.util.Map;
import ch.qos.cal10n.util.Token.TokenType;
import java.io.Reader;

      return;
    }
    switch (t.tokenType) {
    case EOL:
      break;
    case KEY:
      String k = t.getValue();
      t = getNextToken();
      if (t.tokenType != TokenType.SEPARATOR) {
        throw new IllegalStateException("Unexpected token " + t);
      }
      StringBuilder buf = new StringBuilder();
      V(buf);
      map.put(k, buf.toString());
      break;
    }
    E();
  }

  // V = v EOL | v '\' Vopt
  // Vopt = EOL V
  private void V(StringBuilder buf) {

    Token t = getNextToken();
    if (t.tokenType != TokenType.VALUE) {
      throw new IllegalStateException("Unexpected token " + t);
    }
    buf.append(t.getValue());

    t = getNextToken();
    if (t.tokenType == TokenType.EOL) {