function c = domainContainsObstacle(domain, obstacle)
    arguments (Input)
        domain (1, 1) {mustBeGeometry};
        obstacle (1, 1) {mustBeGeometry}; % this could be expanded to handle n obstacles in 1 call
    end
    arguments (Output)
        c (1, 1) logical;
    end

    switch class(domain)
        case "rectangularPrism"
            switch class(obstacle)
                case "rectangularPrism"
                    c = all(domain.minCorner <= obstacle.minCorner) && all(domain.maxCorner >= obstacle.maxCorner);
                otherwise
                    error("%s not implemented for obstacles of class %s", coder.mfunctionname, class(domain));
            end
        otherwise
            error("%s not implemented for domains of class %s", coder.mfunctionname, class(domain));
    end
end