public void parseMetaLine(final String line) {
        parsedLines++;
        final StringTokenizer tk = new StringTokenizer(line, " ");
        String name = tk.nextToken();
        final String value = tk.nextToken();
        final int idx = name.indexOf(';');
        if (idx >= 0) {
            name = name.substring(0, idx);
        }

        if (!fixTagsWritten) {
            fixTagsWritten = true;
            if ("way".equals(context)) {
                addLookupValue("reversedirection", "yes", null);
            } else if ("node".equals(context)) {
                addLookupValue("nodeaccessgranted", "yes", null);
            }
        }
        if ("reversedirection".equals(name)) {
            return; // this is hardcoded
        }
        if ("nodeaccessgranted".equals(name)) {
            return; // this is hardcoded
        }
        final BExpressionLookupValue newValue = addLookupValue(name, value, null);

        // add aliases
        while (newValue != null && tk.hasMoreTokens()) {
            newValue.addAlias(tk.nextToken());
        }
    }
decode a byte-array into a lookup data array
main/src/main/java/cgeo/geocaching/brouter/expressions/BExpressionContext.java