function hasQuotedKeys( obj ) {
	var props;
	var elem;
	var key;
	var val;
	var i;
	var j;

	props = obj.properties;
	for ( i = 0; i < props.length; i++ ) {
		key = props[ i ].key;
		val = props[ i ].value;
		if (
			!key.raw ||
			!startsWith( key.raw, '\'' ) ||
			!endsWith( key.raw, '\'' )
		) {
			return false;
		}
		if ( val && val.type === 'ObjectExpression' ) {
			if ( !hasQuotedKeys( val ) ) {
				return false;
			}
		}
		else if ( val && val.type === 'ArrayExpression' ) {
			for ( j = 0; j < val.elements.length; j++ ) {
				elem = val.elements[ j ];
				if ( elem && elem.type === 'ObjectExpression' ) {
					if ( !hasQuotedKeys( elem ) ) {
						return false;
					}
				}
			}
		}
	}
	return true;
}
Checks whether a node for an object expression contains only quoted properties.

@private
@param {ASTNode} obj - object to examine
@returns {boolean} boolean indicating whether the object has only keys wrapped in single quotes