public Space getSpaceAt(final Vector center, final Criterion criterion) {
        if(intersects(center)) {
            switch(getCriterionReponse(criterion)) {
                case PASS:
                    return this;

                case DISBURSE:
                    disburse();
                    assert !isLeaf();

                    for(Space space : nodes) {
                        Space at = space.getSpaceAt(center, criterion);
                        if(at != null) {
                            return at;
                        }
                    }

                    return null;
            }
        }

        return null;
    }