function(def) {
        var start = Array.isArray(def.start) ? def.start : [def.start];
        var end = Array.isArray(def.end) ? def.end : [def.end];
        var then = def.then ? (Array.isArray(def.then) ? def.then : [def.then]) : [];

        var child = new Block(line, {
            start: start,
            end: end,
            then: then
        }, self);
        self.children.push(child);
        return child;
    }
function(def) {
        var start = Array.isArray(def.start) ? def.start : [def.start];
        var end = Array.isArray(def.end) ? def.end : [def.end];
        var then = def.then ? (Array.isArray(def.then) ? def.then : [def.then]) : [];

        var child = new Block(line, {
            start: start,
            end: end,
            then: then
        }, self);
        self.children.push(child);
        return child;
    }
function ( def ) { var start = Array . isArray ( def . start ) ? def . start : [ def . start ] ; var end = Array . isArray ( def . end ) ? def . end : [ def . end ] ; var then = def . then ? ( Array . isArray ( def . then ) ? def . then : [ def . then ] ) : [ ] ; var child = new Block ( line , { start : start , end : end , then : then } , self ) ; self . children . push ( child ) ; return child ; }
Creates a block with the specified definition

@param {Object} def The block definition
@returns {Block}
Creates a block with the specified definition