what if it starts with whitespace? should consumeValue eat whitespace at the beginning and end?