public Event next() {
    StringTokenizer st = new StringTokenizer(line);
    String outcome = st.nextToken();
    if (outcome.equals("&null;"))
    	outcome = "";
    else if (outcome.indexOf('·')>=0)
    	outcome = outcome.replace('·', ' ');
    
    int count = st.countTokens();
    // Assaf update: read real values from file
    boolean hasValues = line.contains("=");
    String[] context = new String[count];
    float[] values = null;
    if (hasValues)
    	values = new float[count];
    for (int ci = 0; ci < count; ci++) {
    	String token = st.nextToken();
    	if (hasValues) {
    		int equalsPos = token.lastIndexOf('=');
    		if (equalsPos<0) {
    			LOG.error("Missing value");
    			LOG.error("Line: " + line);
    			LOG.error("Token: " + token);
    			throw new RuntimeException("Missing value, on token \"" + token + "\"");
    		}
    		context[ci] = token.substring(0, equalsPos);
    		values[ci] = Float.parseFloat(token.substring(equalsPos+1));
    	} else {
    		context[ci] = token;
    	}
    }
    Event event = null;
    if (hasValues)
    	event = new Event(outcome, context, values);
    else
    	event = new Event(outcome, context);
    return event;
  }