{ 
    "top-level-interface": { 
        "description": "Top-level Interface", 
        "prefix": "interface-tl", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow;", 
            "", 
            "/**", 
            " * Describes the component in charge of ${1:doing}.", 
            " */", 
            "interface $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "top-level-class": { 
        "description": "Top-level Class", 
        "prefix": "class-tl", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow;", 
            "", 
            "final class $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "top-level-exception": { 
        "description": "Top-level Exception", 
        "prefix": "exception-tl", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow;", 
            "", 
            "use Exception;", 
            "", 
            "/**", 
            " * Exception thrown when ${1:description}.", 
            " */", 
            "final class $TM_FILENAME_BASE extends Exception", 
            "{", 
            "}" 
        ] 
    }, 
    "top-level-trait": { 
        "description": "Top-level Trait", 
        "prefix": "trait-tl", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow;", 
            "", 
            "trait $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "interface": { 
        "description": "Interface", 
        "prefix": "interface", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+.}${5:+.}$5/g};", 
            "", 
            "/**", 
            " * Describes the component in charge of ${1:doing}.", 
            " */", 
            "interface $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "class": { 
        "description": "Class", 
        "prefix": "class", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+.}${5:+.}$5/g};", 
            "", 
            "final class $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "exception": { 
        "description": "Exception", 
        "prefix": "exception", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+.}${5:+.}$5/g};", 
            "", 
            "use Exception;", 
            "", 
            "/**", 
            " * Exception thrown when ${1:description}.", 
            " */", 
            "final class $TM_FILENAME_BASE extends Exception", 
            "{", 
            "}" 
        ] 
    }, 
    "trait": { 
        "description": "Trait", 
        "prefix": "trait", 
        "body": [ 
            "<?php", 
            "", 
            "namespace Chevere\\Workflow\\\\${TM_DIRECTORY/.*src\\/(([^\\/]*)(\\/)?)|(\\/)([^\\/]*)/$2${3:+.}${5:+.}$5/g};", 
            "", 
            "trait $TM_FILENAME_BASE", 
            "{", 
            "\t$0", 
            "}" 
        ] 
    }, 
    "immutable-method": { 
        "description": "Immutable method", 
        "prefix": "immutable-method", 
        "body": [ 
            "private ${2|int,string,bool,array,object,resource|} \\$${3:argument};", 
            "", 
            "public function with${1:Name}(${2|int,string,bool,array,object,resource|} \\$${3:argument}): ${4:self}", 
            "{", 
            "\t\\$new = clone \\$this;", 
            "\t\\$new->${3:argument} = \\$${3:argument};", 
            "", 
            "\treturn \\$new;", 
            "}" 
        ] 
    }, 
} 
 
 |