code: function () {
                      var name, params = [], match, ruleset, cond, variadic = false;
                      if ((input.charAt(i) !== '.' && input.charAt(i) !== '#') ||
                          peek(/^[^{]*\}/)) {
                          return;
                      }
  
                      save();
  
                      match = $re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/);
                      if (match) {
                          name = match[1];
  
                          var argInfo = this.args(false);
                          params = argInfo.args;
                          variadic = argInfo.variadic;
  
                          // .mixincall("@{a}");
                          // looks a bit like a mixin definition.. so we have to be nice and restore
                          if (!$char(')')) {
                              furthest = i;
                              restore();
                          }
  
                          parsers.comments();
  
                          if ($re(/^when/)) { // Guard
                              cond = expect(parsers.conditions, 'expected condition');
                          }
  
                          ruleset = parsers.block();
  
                          if (ruleset) {
                              return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic);
                          } else {
                              restore();
                          }
                      }
                  }
docs: A Mixin definition, with a list of parameters  .rounded (@radius: 2px, @color) { ... }  Until we have a finer grained state-machine, we have to do a look-ahead, to make sure we don't have a mixin call. See the `rule` function for more information.  We start by matching `.rounded (`, and then proceed on to the argument list, which has optional default values. We store the parameters in `params`, with a `value` key, if there is a value, such as in the case of `@radius`.  Once we've got our params list, and a closing `)`, we parse the `{...}` block.