private function BuildSource(Sql\Table $table, Sql\Join $join = null, Sql\JoinType $joinType = null, Sql\Condition $joinCondition = null)
    {
        $src = $table;
        if ($join)
        {
            if (!$joinType || !$joinCondition)
                throw new \InvalidArgumentException("If join is given, a join type and join condition are also required.");
            
            $src = $join->Join($table, $joinType, $joinCondition, true);
        }
        return $src;
    }