function (isLess) {
                var index = parserInput.i, elements, extendList, c, e, allExtends, when, condition;
                isLess = isLess !== false;
                while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {
                    if (when) {
                        condition = expect(this.conditions, 'expected condition');
                    } else if (condition) {
                        error('CSS guard can only be used at the end of selector');
                    } else if (extendList) {
                        if (allExtends) {
                            allExtends = allExtends.concat(extendList);
                        } else {
                            allExtends = extendList;
                        }
                    } else {
                        if (allExtends) { error('Extend can only be used at the end of selector'); }
                        c = parserInput.currentChar();
                        if (elements) {
                            elements.push(e);
                        } else {
                            elements = [ e ];
                        }
                        e = null;
                    }
                    if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {
                        break;
                    }
                }

                if (elements) { return new(tree.Selector)(elements, allExtends, condition, index, fileInfo); }
                if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }
            }
function (isLess) {
                var index = parserInput.i, elements, extendList, c, e, allExtends, when, condition;
                isLess = isLess !== false;
                while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {
                    if (when) {
                        condition = expect(this.conditions, 'expected condition');
                    } else if (condition) {
                        error('CSS guard can only be used at the end of selector');
                    } else if (extendList) {
                        if (allExtends) {
                            allExtends = allExtends.concat(extendList);
                        } else {
                            allExtends = extendList;
                        }
                    } else {
                        if (allExtends) { error('Extend can only be used at the end of selector'); }
                        c = parserInput.currentChar();
                        if (elements) {
                            elements.push(e);
                        } else {
                            elements = [ e ];
                        }
                        e = null;
                    }
                    if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {
                        break;
                    }
                }

                if (elements) { return new(tree.Selector)(elements, allExtends, condition, index, fileInfo); }
                if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }
            }
function ( isLess ) { var index = parserInput . i , elements , extendList , c , e , allExtends , when , condition ; isLess = isLess !== false ; while ( ( isLess && ( extendList = this . extend ( ) ) ) || ( isLess && ( when = parserInput . $str ( 'when' ) ) ) || ( e = this . element ( ) ) ) { if ( when ) { condition = expect ( this . conditions , 'expected condition' ) ; } else if ( condition ) { error ( 'CSS guard can only be used at the end of selector' ) ; } else if ( extendList ) { if ( allExtends ) { allExtends = allExtends . concat ( extendList ) ; } else { allExtends = extendList ; } } else { if ( allExtends ) { error ( 'Extend can only be used at the end of selector' ) ; } c = parserInput . currentChar ( ) ; if ( elements ) { elements . push ( e ) ; } else { elements = [ e ] ; } e = null ; } if ( c === '{' || c === '}' || c === ';' || c === ',' || c === ')' ) { break ; } } if ( elements ) { return new ( tree . Selector ) ( elements , allExtends , condition , index , fileInfo ) ; } if ( allExtends ) { error ( 'Extend must be used to extend a selector, it cannot be used on its own' ) ; } }
A CSS Selector with less extensions e.g. the ability to extend and guard  .class > div + h1 li a:hover  Selectors are made out of one or more Elements, see above.
A CSS Selector with less extensions e . g . the ability to extend and guard . class > div + h1 li a : hover Selectors are made out of one or more Elements see above .