code: function implement(classDefinition, protocol) {
  	doImplement(classDefinition, protocol);
  
  	setTimeout(function() {
  		assertHasImplemented(classDefinition, protocol);
  	}, 0);
  
  	return classDefinition;
  }
docs: 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.