src/topiarist.js
function implement(classDefinition, protocol) {
	doImplement(classDefinition, protocol);

	setTimeout(function() {
		assertHasImplemented(classDefinition, protocol);
	}, 0);

	return classDefinition;
}
function implement(classDefinition, protocol) {
	doImplement(classDefinition, protocol);

	setTimeout(function() {
		assertHasImplemented(classDefinition, protocol);
	}, 0);

	return classDefinition;
}
function implement ( classDefinition , protocol ) { doImplement ( classDefinition , protocol ) ; setTimeout ( function ( ) { assertHasImplemented ( classDefinition , protocol ) ; } , 0 ) ; return classDefinition ; }
Declares that the provided class will implement the provided protocol.

<p>This involves immediately updating an internal list of interfaces attached to the class definition,
and after a <code>setTimeout(0)</code> verifying that it does in fact implement the protocol.</p>

<p>It can be called before the implementations are provided, i.e. immediately after the constructor.</p>

@throws Error if there are any attributes on the protocol that are not matched on the class definition.

@memberOf topiarist
@param {function} classDefinition A constructor that should create objects matching the protocol.
@param {function} protocol A constructor representing an interface that the class should implement.
Declares that the provided class will implement the provided protocol .