dist/regular/strict/dejavu.js
function parseAbstracts(abstracts, constructor) {
        var optsStatic = { isStatic: true },
            key,
            value,
            unallowed;

        // Check argument
        if (!isObject(abstracts)) {
            throw new Error('$abstracts defined in abstract class "' + constructor.prototype.$name + '" must be an object.');
        }

        // Check reserved keywords
        checkKeywords(abstracts);

        // Check unallowed keywords
        unallowed = testKeywords(abstracts, ['$statics']);
        if (unallowed) {
            throw new Error('$statics inside $abstracts of abstract class "' + constructor.prototype.$name + '" contains an unallowed keyword: "' + unallowed + '".');
        }

        if (hasOwn(abstracts, '$statics')) {
            // Check argument
            if (!isObject(abstracts.$statics)) {
                throw new Error('$statics definition in $abstracts of abstract class "' + constructor.prototype.$name + '" must be an object.');
            }

            // Check keywords
            checkKeywords(abstracts.$statics, 'statics');

            // Check unallowed keywords
            unallowed = testKeywords(abstracts.$statics);
            if (unallowed) {
                throw new Error('$statics inside $abstracts of abstract class "' + constructor.prototype.$name + '" contains an unallowed keyword: "' + unallowed + '".');
            }

            for (key in abstracts.$statics) {
                value = abstracts.$statics[key];

                // Check if it is not a function
                if (!isFunction(value) || value[$interface] || value[$class]) {
                    throw new Error('Abstract member "' + key + '" found in abstract class "' + constructor.prototype.$name + '" is not a function.');
                }

                addMethod(key, value, constructor, optsStatic);
            }

            delete abstracts.$statics;
        }

        for (key in abstracts) {
            value = abstracts[key];

            // Check if it is not a function
            if (!isFunction(value) || value[$interface] || value[$class]) {
                throw new Error('Abstract member "' + key + '" found in abstract class "' + constructor.prototype.$name + '" is not a function.');
            }

            addMethod(key, value, constructor);
        }
    }
function parseAbstracts(abstracts, constructor) {
        var optsStatic = { isStatic: true },
            key,
            value,
            unallowed;

        // Check argument
        if (!isObject(abstracts)) {
            throw new Error('$abstracts defined in abstract class "' + constructor.prototype.$name + '" must be an object.');
        }

        // Check reserved keywords
        checkKeywords(abstracts);

        // Check unallowed keywords
        unallowed = testKeywords(abstracts, ['$statics']);
        if (unallowed) {
            throw new Error('$statics inside $abstracts of abstract class "' + constructor.prototype.$name + '" contains an unallowed keyword: "' + unallowed + '".');
        }

        if (hasOwn(abstracts, '$statics')) {
            // Check argument
            if (!isObject(abstracts.$statics)) {
                throw new Error('$statics definition in $abstracts of abstract class "' + constructor.prototype.$name + '" must be an object.');
            }

            // Check keywords
            checkKeywords(abstracts.$statics, 'statics');

            // Check unallowed keywords
            unallowed = testKeywords(abstracts.$statics);
            if (unallowed) {
                throw new Error('$statics inside $abstracts of abstract class "' + constructor.prototype.$name + '" contains an unallowed keyword: "' + unallowed + '".');
            }

            for (key in abstracts.$statics) {
                value = abstracts.$statics[key];

                // Check if it is not a function
                if (!isFunction(value) || value[$interface] || value[$class]) {
                    throw new Error('Abstract member "' + key + '" found in abstract class "' + constructor.prototype.$name + '" is not a function.');
                }

                addMethod(key, value, constructor, optsStatic);
            }

            delete abstracts.$statics;
        }

        for (key in abstracts) {
            value = abstracts[key];

            // Check if it is not a function
            if (!isFunction(value) || value[$interface] || value[$class]) {
                throw new Error('Abstract member "' + key + '" found in abstract class "' + constructor.prototype.$name + '" is not a function.');
            }

            addMethod(key, value, constructor);
        }
    }
function parseAbstracts ( abstracts , constructor ) { var optsStatic = { isStatic : true } , key , value , unallowed ; // Check argument if ( ! isObject ( abstracts ) ) { throw new Error ( '$abstracts defined in abstract class "' + constructor . prototype . $name + '" must be an object.' ) ; } // Check reserved keywords checkKeywords ( abstracts ) ; // Check unallowed keywords unallowed = testKeywords ( abstracts , [ '$statics' ] ) ; if ( unallowed ) { throw new Error ( '$statics inside $abstracts of abstract class "' + constructor . prototype . $name + '" contains an unallowed keyword: "' + unallowed + '".' ) ; } if ( hasOwn ( abstracts , '$statics' ) ) { // Check argument if ( ! isObject ( abstracts . $statics ) ) { throw new Error ( '$statics definition in $abstracts of abstract class "' + constructor . prototype . $name + '" must be an object.' ) ; } // Check keywords checkKeywords ( abstracts . $statics , 'statics' ) ; // Check unallowed keywords unallowed = testKeywords ( abstracts . $statics ) ; if ( unallowed ) { throw new Error ( '$statics inside $abstracts of abstract class "' + constructor . prototype . $name + '" contains an unallowed keyword: "' + unallowed + '".' ) ; } for ( key in abstracts . $statics ) { value = abstracts . $statics [ key ] ; // Check if it is not a function if ( ! isFunction ( value ) || value [ $interface ] || value [ $class ] ) { throw new Error ( 'Abstract member "' + key + '" found in abstract class "' + constructor . prototype . $name + '" is not a function.' ) ; } addMethod ( key , value , constructor , optsStatic ) ; } delete abstracts . $statics ; } for ( key in abstracts ) { value = abstracts [ key ] ; // Check if it is not a function if ( ! isFunction ( value ) || value [ $interface ] || value [ $class ] ) { throw new Error ( 'Abstract member "' + key + '" found in abstract class "' + constructor . prototype . $name + '" is not a function.' ) ; } addMethod ( key , value , constructor ) ; } }
Parse abstract methods.

@param {Object}   abstracts   The object that contains the abstract methods
@param {Function} constructor The constructor
Parse abstract methods .