public function beConstructedThrough($factoryMethod, array $arguments = array())
{
if (is_string($factoryMethod) && false === strpos($factoryMethod, '::') && method_exists($this->classname, $factoryMethod)) {
$factoryMethod = array($this->classname, $factoryMethod);
}
if ($this->isInstantiated()) {
throw new SubjectException('You can not change object construction method when it is already instantiated');
}
$this->factoryMethod = $factoryMethod;
$unwrapper = new Unwrapper();
$this->arguments = $unwrapper->unwrapAll($arguments);
}