public function bind($abstract, $concrete = null, $singleton = false)
{
if (is_array($abstract)) {
list($abstract, $alias) = [key($abstract), current($abstract)];
$this->alias($abstract, $alias);
}
$abstract = $this->filter($abstract);
$concrete = $this->filter($concrete);
if (is_null($concrete)) {
$concrete = $abstract;
}
$this->binds[$abstract] = compact('concrete', 'singleton');
return $this;
}