private boolean skipWhitespacesAndComments() {
        while (iterator.hasNext() && 
                Character.isWhitespace(iterator.current().value())) {
            iterator.next();
        }
        if(iterator.current().value() == '/' && iterator.hasNext()) {
            CodePoint c;
            if(iterator.hasNext()) {
                c = iterator.watchNext();
                if(c.value() == '/') {
                    iterator.advance(2);
                    while (iterator.hasNext() && 
                           iterator.current().value() != '\n') {

                        iterator.next();
                    }
                } else if(c.value() == '*') {
                    iterator.advance(2);
                    while (iterator.hasNext()) {
                        int ch = iterator.current().value();
                        iterator.next();
                        if(ch == '*' && iterator.current().value() == '/')
                            break;
                    }
                    iterator.advance(1);
                }
            }
        }
        return !iterator.hasNext();
    }