.error {

border: 1px #f00;
background: #fdd;

} .error.intrusion {

font-size: 1.3em;
font-weight: bold;

} .intrusion .error {

display: none;

} .badError:extend(.error all) {

border-width: 3px;

}

.foo .bar, .foo .baz {

display: none;

}

.ext1 .ext2

:extend(.foo all) {

}

.ext3:extend(.foo all), .ext4:extend(.foo all) { }

div.ext5, .ext6 > .ext5 {

width: 100px;

}

.should-not-exist-in-output, .ext7:extend(.ext5 all) { }

.ext {

test: 1;

} // same as // .a .c:extend(.ext all) // .b .c:extend(.ext all) // .a .c .d // .b .c .d .a, .b {

test: 2;
.c:extend(.ext all) {
  test: 3;
  .d {
    test: 4;
  }
}

}

.replace.replace, .c.replace + .replace {

.replace,
.c {
  prop: copy-paste-replace;
}

} .rep_ace:extend(.replace all) {}

.attributes {

[data="test"] {
  extend: attributes;
}
.attribute-test {
  &:extend([data="test"] all);
}
[data] {
  extend: attributes2;
}
.attribute-test2 {
  &:extend([data] all); //you could argue it should match [data="test"]... not for now though...
}
@attr-data: "test3";
[data=@{attr-data}] {
  extend: attributes2;
}
.attribute-test {
  &:extend([data="test3"] all);
}

}

.header {

.header-nav {
  background: red;
  &:before {
    background: blue;
  }
}

}

.footer {

.footer-nav {
  &:extend( .header .header-nav all );
}

}