code: function( angle ){
  
              if (!angle && this._aabb){
                  return Physics.aabb.clone( this._aabb );
              }
  
              var b
                  ,aabb
                  ,ch
                  ,ret
                  ,scratch = Physics.scratchpad()
                  ,pos = Physics.vector()
                  ;
  
              angle = angle || 0;
  
              for ( var i = 0, l = this.children.length; i < l; i++ ) {
                  ch = this.children[ i ];
                  // the aabb rotated by overall angle and the child rotation
                  aabb = ch.g.aabb( angle + ch.angle );
                  pos.clone( ch.pos );
                  if ( angle ){
                      // get the child's position rotated if needed
                      pos.rotate( angle );
                  }
                  // move the aabb to the child's position
                  aabb.x += pos._[0];
                  aabb.y += pos._[1];
                  ret = ret ? Physics.aabb.union(ret, aabb, true) : aabb;
              }
  
              if ( !angle ){
                  // if we don't have an angle specified (or it's zero)
                  // then we can cache this result
                  this._aabb = Physics.aabb.clone( ret );
              }
  
              return scratch.done( ret );
          }
docs: extended