@Override public <A> A get(final Pop pop, final String label) { if (Pop.mixed == pop) { return this.get(label); } else if (Pop.all == pop) { if (this.hasLabel(label)) { final Object object = this.get(label); if (object instanceof List) return (A) object; else return (A) Collections.singletonList(object); } else { return (A) Collections.emptyList(); } } else { // Override default to avoid building temporary list, and to stop looking when we find the label. if (Pop.last == pop) { for (int i = this.labels.size() - 1; i >= 0; i--) { if (labels.get(i).contains(label)) return (A) objects.get(i); } } else { for (int i = 0; i != this.labels.size(); i++) { if (labels.get(i).contains(label)) return (A) objects.get(i); } } throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label); } }
@Override public <A> A get(final Pop pop, final String label) { if (Pop.mixed == pop) { return this.get(label); } else if (Pop.all == pop) { if (this.hasLabel(label)) { final Object object = this.get(label); if (object instanceof List) return (A) object; else return (A) Collections.singletonList(object); } else { return (A) Collections.emptyList(); } } else { // Override default to avoid building temporary list, and to stop looking when we find the label. if (Pop.last == pop) { for (int i = this.labels.size() - 1; i >= 0; i--) { if (labels.get(i).contains(label)) return (A) objects.get(i); } } else { for (int i = 0; i != this.labels.size(); i++) { if (labels.get(i).contains(label)) return (A) objects.get(i); } } throw Path.Exceptions.stepWithProvidedLabelDoesNotExist(label); } }