+sub _fetch_layer {
+ my $self = shift;
+ my $sequence = shift;
+ my $point = shift;
+ my $next;
+ my @points = @_;
+ my $l;
+
+ $self->debug("Looking for %s in %s", $point, Dumper($sequence));
+
+ unless(defined($point)) {
+ $self->debug("Reached last point");
+ return $sequence;
+ }
+ ($point, $next) = split(/\//, $point, 2);
+
+ foreach (@{$sequence}) {
+ if (exists($_->{'name'}) and ($_->{'name'} eq $point)) {
+ if (exists($_->{$next})) {
+ $self->debug("Using %s in %s", $next, $point);
+ return $self->_fetch_layer($_->{$next}, @points);
+ } else {
+ $self->debug("%s found, but no %s", $point, $next);
+ return undef;
+ }
+
+ }
+ }
+
+ $self->debug("Could not find entry named %s", $point);
+ return undef;
+}
+